幾個(gè)主流的Java連接池
51CTO曾經(jīng)為我們簡(jiǎn)單的介紹過(guò)Java連接池。要了解Java連接池我們先要了解數(shù)據(jù)庫(kù)連接池(connection pool)的原理,Java連接池正是數(shù)據(jù)庫(kù)連接池在Java上的應(yīng)用。——我們知道,對(duì)于共享資源,有一個(gè)很著名的設(shè)計(jì)模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配﹑釋放所造成的問(wèn)題。為解決上述問(wèn)題,可以采用數(shù)據(jù)庫(kù)連接池技術(shù)。數(shù)據(jù)庫(kù)連接池的基本思想就是為數(shù)據(jù)庫(kù)連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫(kù)連接時(shí),只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去。我們可以通過(guò)設(shè)定連接池最大連接數(shù)來(lái)防止系統(tǒng)無(wú)盡的與數(shù)據(jù)庫(kù)連接。更為重要的是我們可以通過(guò)連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫(kù)的連接的數(shù)量﹑使用情況,為系統(tǒng)開發(fā)﹑測(cè)試及性能調(diào)整提供依據(jù)。
C3P0是一個(gè)開放源代碼的JDBC連接池,它在lib目錄中與Hibernate一起發(fā)布,包括了實(shí)現(xiàn)jdbc3和jdbc2擴(kuò)展規(guī)范說(shuō)明的Connection 和Statement 池的DataSources 對(duì)象。(主頁(yè):http://sourceforge.net/projects/c3p0/)
BoneCP 是一個(gè)開源的快速的 JDBC 連接池。BoneCP很小,只有四十幾K(運(yùn)行時(shí)需要log4j和Google Collections的支持,這二者加起來(lái)就不小了),而相比之下 C3P0 要六百多K。另外個(gè)人覺得 BoneCP 有個(gè)缺點(diǎn)是,JDBC驅(qū)動(dòng)的加載是在連接池之外的,這樣在一些應(yīng)用服務(wù)器的配置上就不夠靈活。當(dāng)然,體積小并不是 BoneCP 優(yōu)秀的原因,BoneCP 到底有什么突出的地方呢,請(qǐng)看看性能測(cè)試報(bào)告。(主頁(yè):http://jolbox.com/)
DBCP (Database Connection Pool)是一個(gè)依賴Jakarta commons-pool對(duì)象池機(jī)制的數(shù)據(jù)庫(kù)連接池,Tomcat的數(shù)據(jù)源使用的就是DBCP。目前 DBCP 有兩個(gè)版本分別是 1.3 和 1.4。1.3 版本對(duì)應(yīng)的是 JDK 1.4-1.5 和 JDBC 3,而1.4 版本對(duì)應(yīng) JDK 1.6 和 JDBC 4。因此在選擇版本的時(shí)候要看看你用的是什么 JDK 版本了,功能上倒是沒有什么區(qū)別。(主頁(yè):http://commons.apache.org/dbcp/)
Proxool是一個(gè)Java SQL Driver驅(qū)動(dòng)程序,提供了對(duì)你選擇的其它類型的驅(qū)動(dòng)程序的連接池封裝。可以非常簡(jiǎn)單的移植到現(xiàn)存的代碼中。完全可配置??焖伲墒?,健壯。可以透明地為你現(xiàn)存的JDBC驅(qū)動(dòng)程序增加連接池功能。(主頁(yè):http://proxool.sourceforge.net/)
【編輯推薦】