在系統性能優化的時候,或者說在進行代碼開發的時候,多數人應該都知道一個很基本的原則,那就是保證功能正常良好的情況下,要盡量減少對資料庫的操作。
據我所知,原因大概有這樣兩個:
一個是,一般情況下系統伺服器和資料庫伺服器應該是不在同一硬體上,這時候對資料庫的連接配接、操作就和網絡有了很大的關系,連接配接、操作資料庫越多就越影響性能。
二是,資料庫的資料持久化在硬體磁盤上,對資料庫資料的操作就要進行磁盤的io讀寫操作,同樣是操作越多就越容易影響性能。
而資料庫連接配接池的作用是負責配置設定、管理和釋放資料庫連接配接,它允許應用程式重複使用一個現有的資料庫連接配接,而不是再重建立立一個;釋放空閑時間超過最大空閑時間的資料庫連接配接來避免因為沒有釋放資料庫連接配接而引起的資料庫連接配接遺漏。
是以現在多數項目都會使用到資料庫連接配接池來管理資料庫的操作,而不是簡單直接的用jdbc。
就我目前所接觸的項目來說,用的最多的就是阿裡的druid連接配接池,除此之外就是c3p0,是以抽時間對這兩個連接配接池的常用配置和使用進行一個整理,我覺得也是比較必要的,應該能一定程度上提高日後的工作效率。
至于這兩個連接配接池的具體說明和介紹,網上有非常多的資料,我想也就沒有什麼必要在這裡多說。
首先建立一個簡單的資料庫表:
然後建立一個簡單的項目,這裡用的是spring+mybatis的架構,因為目前來說,操作mysql的時候mybatis是我們用的比較多的。
這個代碼和配置完整後的項目結構如下圖:
首先因為用到spring+mybatis架構和mysql資料庫及相關連接配接池,我們需要先導入必要的依賴jar包,我的項目是個maven項目,導包pom.xml檔案如下:
然後對應資料庫字段建立一個實體類usermodel,這個如此簡單,我想自然沒有必要多做解釋:
再然後建立一個dao接口,在接口裡寫一個簡單的抽象方法:
既然是用了mybatis,自然不再需要寫對應的實作類,這個步驟就變成了mybatis的配置,即這裡的userdaomapper.xml,至于裡邊内容的解釋,我曾特意整理過,這裡也不再贅述:
接下來就是主要的配置檔案,首先是spring的主配置,這裡我命名為spring.xml,因為内容少,是以基本上配置都寫在了這裡,至于具體的每段配置的解釋,都寫在了注釋中:
從這個檔案中看到,我們需要三個檔案:config.properties,也就是資料庫資料源的必要參數内容,然後分别是代表c3p0連接配接池和druid連接配接池的兩個檔案:
c3p0.xml内容如下:
druid.xml内容如下:
從上邊的配置中可以看出這兩個配置很多地方都是比較相似的,隻是有些地方可能功能一樣而名稱不一樣而已,我這裡隻是為了整理而同時配了兩個,隻在spring.xml導入的時候切換,實際情況隻需要一個就好。
為了驗證配置是可用的,我寫了一個簡單的test類:
經過運作這個test方法可以看到,不論是導入c3p0.xml還是導入druid.cml,運作結果都是正确并且一樣的,代表整個配置可用。
當然了,連接配接池的配置遠不止我所配的這些,不論是c3p0還是druid都還有很多的參數,具體需要配置哪些,可能就需要視具體情況而定了。
其中一些配置說明可以參考下邊兩篇部落格,我在整理的過程中也是參考了不少這兩篇部落格中的内容。
<a href="http://www.cnblogs.com/wuyun-blog/p/5679073.html">http://www.cnblogs.com/wuyun-blog/p/5679073.html</a>
<a href="http://www.cnblogs.com/lannoy/p/5824866.html">http://www.cnblogs.com/lannoy/p/5824866.html</a>
另外,這個簡單的項目我也已經打包上傳,有興趣的可以下載下傳:
密碼:h77k