介紹幾個(gè)主流的Java連接池
連接池是創(chuàng)建和管理一個(gè)連接的緩沖池的技術(shù),這些連接準(zhǔn)備好被任何需要它們的線程使用。 下面介紹java連接池。
了解Java連接池我們先要了解數(shù)據(jù)庫(kù)連接池(connection pool)的原理,Java連接池正是數(shù)據(jù)庫(kù)連接池在Java上的應(yīng)用。——我們知道,對(duì)于共享資源,有一個(gè)很著名的設(shè)計(jì)模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配﹑釋放所造成的問題。
為解決上述問題,可以采用數(shù)據(jù)庫(kù)連接池技術(shù)。數(shù)據(jù)庫(kù)連接池的基本思想就是為數(shù)據(jù)庫(kù)連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫(kù)連接時(shí),只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去。
我們可以通過設(shè)定連接池最大連接數(shù)來(lái)防止系統(tǒng)無(wú)盡的與數(shù)據(jù)庫(kù)連接。更為重要的是我們可以通過連接池的管理機(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ì)象。
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)告。
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ū)別。
Proxool是一個(gè)Java SQL Driver驅(qū)動(dòng)程序,提供了對(duì)你選擇的其它類型的驅(qū)動(dòng)程序的連接池封裝??梢苑浅:?jiǎn)單的移植到現(xiàn)存的代碼中。完全可配置??焖?,成熟,健壯??梢酝该鞯貫槟悻F(xiàn)存的JDBC驅(qū)動(dòng)程序增加連接池功能。
希望通過本文的介紹,沒能給你帶來(lái)幫助。
【編輯推薦】