dbcp是Apache的一個開源項目:commons.dbcp
dbcp依賴Apache的另外兩個開源項目:commons.collections和commons.pool
下載以上三個jar包,並添加到你的項目中就可使用dbcp做爲項目的數據庫鏈接池了
下載地址:http://commons.apache.org/downloads/[collections,dbcp,pool]
2.C3P0
c3p0是一個開放源代碼的JDBC鏈接池,他在lib目錄中和Hibernate一塊兒發佈,包括實現jdbc3和jdbc2拓展說明Collection和Statement池的Datasources對象
下載地址:http://sourceforge.net/projects/c3p0
3.Proxool
proxool是一個Java SQL Driver驅動程序,提供了對你選擇的其它類型的驅動程序的鏈接池封裝。能夠很是簡單的移植到現存的代碼中。徹底可配置。快速,成熟,健壯。能夠透明地爲你現存的JDBC驅動程序增長鏈接池功能
官方主頁:http://proxool.sourceforge.net
下載地址:http://proxool.sourceforge.net/download.html
4.DBPool
DBPool是一個高效的易配置的數據庫鏈接池。它除了支持鏈接池應有的功能以外,還包括了一個對象池使你可以開發一個知足自已需求的數據庫鏈接池
項目主頁:http://homepages.nildram.co.uk/slink/java/DBPool/
在實際使用中,咱們能夠根據本身項目的需求和要求性能進行選擇,若項目中添加了Spring框架,就能夠很容易在Spring的配置文件中進行配置。也能夠在Hibernate項目中配置,還能夠在Tomcat中對鏈接池進行配置,經過使用JNDI得到鏈接 html
下邊我們來對比一下: java
C3P0和DBCP
C3P0是Hibernate3.0默認的自帶數據庫鏈接池,DBCP是Apache開發的數據庫鏈接池。咱們對這兩種鏈接池進行壓力測試對比,發如今併發300個用戶如下時,DBCP比C3P0平均時間快1秒左右。但在併發400個用戶時,二者差很少。
速度上雖然DBCP比C3P0快些,可是有BUG:當DBCP創建的數據庫鏈接,由於某種緣由斷掉後,DBCP將不會再從新建立新的鏈接,致使必須從新啓動Tomcat才能解決問題。DBCP的BUG使咱們決定採用C3P0做爲數據庫鏈接池。 算法
dbcp有BUG,在某些種情會產生不少空鏈接不能釋放,因此拋棄了對dbcp的支持。我不知是否在dbcp最新版本中解決了這個問題,我之前在一個訪問量不大的項目中用過dbcp,運行了一年多都沒出現問題。不過在網上的確也有很多網友指出dbcp在大型的應用中會出現不穩定的狀況。因此在真相未經證明的狀況下,我以爲對dbcp持慎重的態度。 數據庫
c3p0:
至於c3p0,有評論說它的算法不是最優的,並且,我在matrix中,見到有網友作了一個實驗,在同一項目中分別用了幾個經常使用的鏈接池,而後測試其性能,發現c3p0佔用資源比較大,效率也不高。
因此,基於上述緣由,我才花兩晚的時間去研究proxool的配置,proxool很多行家推薦使用,並且暫時來講,是負面評價是最少的一個。在三星中也有項目是用proxool的。 apache
C3P0在負載種的狀況下表現比較好,C3P0的一個比較特別的設計是它默認會啓動三個異步線程用來在來不及調度的狀況下使用,因此在任何狀況下都不會失去響應。Proxool已經有兩年沒有發佈新版本了吧。 併發