J2EE開發常用數據庫連接池

                                                                        J2EE開發常用數據庫連接池   
                                                                       
***************************************************     1.Jakarta DBCP    ************************************************************************




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獲得連接








下邊咱們來對比一下:








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的。


C3P0在負載種的情況下表現比較好,C3P0的一個比較特別的設計是它默認會啓動三個異步線程用來在來不及調度的情況下使用,所以在任何情況下都不會失去響應。Proxool已經有兩年沒有發佈新版本了吧。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章