數(shù)據(jù)庫連接池c3p0和dbcp

現(xiàn)在常用的開源數(shù)據(jù)連接池主要有c3p0、dbcp和proxool三種,其中:
hibernate開發(fā)組推薦使用c3p0;
spring開發(fā)組推薦使用dbcp(dbcp連接池有weblogic連接池同樣的問題,就是強(qiáng)行關(guān)閉連接或數(shù)據(jù)庫重啟后,無法reconnect,告訴連接被重置,這個設(shè)置可以解決);
hibernate in action推薦使用c3p0和proxool;

dbcp所需jar:commons-dbcp.jar、commons-pool.jar
c3p0所需jar:c3p0-0.9.2.1.jar mchange-commons-java-0.2.3.4.jar

proxool暫時沒有接觸到

C3P0是一個開源的JDBC連接池,它實現(xiàn)了數(shù)據(jù)源和JNDI綁定,支持JDBC3規(guī)范和JDBC2的標(biāo)準(zhǔn)擴(kuò)展。目前使用它的開源項目有Hibernate,Spring等。
dbcp簡介:
DBCP(DataBase connection pool),數(shù)據(jù)庫連接池。是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。單獨使用dbcp需要3個包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立數(shù)據(jù)庫連接是一個非常耗時耗資源的行為,所以通過連接池預(yù)先同數(shù)據(jù)庫建立一些連接,放在內(nèi)存中,應(yīng)用程序需要建立數(shù)據(jù)庫連接時直接到連接池中申請一個就行,用完后再放回去。
c3p0與dbcp區(qū)別:
dbcp沒有自動的去回收空閑連接的功能 c3p0有自動回收空閑連接功能
兩者主要是對數(shù)據(jù)連接的處理方式不同!C3P0提供最大空閑時間,DBCP提供最大連接數(shù)。
前者當(dāng)連接超過最大空閑連接時間時,當(dāng)前連接就會被斷掉。DBCP當(dāng)連接數(shù)超過最大連接數(shù)時,所有連接都會被斷開。

配置方式:

<bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

<property name="initialSize" value="5"/>

<property name="maxActive" value="30"/>

<property name="maxIdle" value="20"/>

<property name="minIdle" value="3"/>

<property name="removeAbandoned" value="true" />

<property name="removeAbandonedTimeout" value="200"/>

<property name="logAbandoned" value="true"/>

<property name="maxWait" value="100"/>
</bean>

<!-- 配置c3p0數(shù)據(jù)源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="jdbcUrl" value="${jdbc.url}" />
    <property name="driverClass" value="${jdbc.driverClassName}" />
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!--連接池中保留的最大連接數(shù)。Default: 15 -->
    <property name="maxPoolSize" value="100" />
    <!--連接池中保留的最小連接數(shù)。-->
    <property name="minPoolSize" value="1" />
    <!--初始化時獲取的連接數(shù),取值應(yīng)在minPoolSize與maxPoolSize之間。Default: 3 -->
    <property name="initialPoolSize" value="10" />
    <!--最大空閑時間,60秒內(nèi)未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
    <property name="maxIdleTime" value="30" />
    <!--當(dāng)連接池中的連接耗盡的時候c3p0一次同時獲取的連接數(shù)。Default: 3 -->
    <property name="acquireIncrement" value="5" />
    <!--JDBC的標(biāo)準(zhǔn)參數(shù),用以控制數(shù)據(jù)源內(nèi)加載的PreparedStatements數(shù)量。但由于預(yù)緩存的statements
      屬于單個connection而不是整個連接池。所以設(shè)置這個參數(shù)需要考慮到多方面的因素。
      如果maxStatements與maxStatementsPerConnection均為0,則緩存被關(guān)閉。Default: 0-->
    <property name="maxStatements" value="0" />
     
    <!--每60秒檢查所有連接池中的空閑連接。Default: 0 -->
    <property name="idleConnectionTestPeriod" value="60" />
     
    <!--定義在從數(shù)據(jù)庫獲取新連接失敗后重復(fù)嘗試的次數(shù)。Default: 30 -->
    <property name="acquireRetryAttempts" value="30" />
    
    <!--獲取連接失敗將會引起所有等待連接池來獲取連接的線程拋出異常。但是數(shù)據(jù)源仍有效
      保留,并在下次調(diào)用getConnection()的時候繼續(xù)嘗試獲取連接。如果設(shè)為true,那么在嘗試
      獲取連接失敗后該數(shù)據(jù)源將申明已斷開并永久關(guān)閉。Default: false-->
    <property name="breakAfterAcquireFailure" value="true" />
     
    <!--因性能消耗大請只在需要的時候使用它。如果設(shè)為true那么在每個connection提交的
      時候都將校驗其有效性。建議使用idleConnectionTestPeriod或automaticTestTable
      等方法來提升連接測試的性能。Default: false -->
    <property name="testConnectionOnCheckout"  value="false" />        
</bean>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,489評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,510評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,866評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,036評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,585評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,331評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,536評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,754評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,273評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,505評論 2 379

推薦閱讀更多精彩內(nèi)容

  • 聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫,學(xué)員有權(quán)匿名,對文章有最終解釋權(quán);凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互...
    凱哥學(xué)堂閱讀 1,060評論 0 0
  • 最原始的數(shù)據(jù)庫連接就是我們打開一個連接,使用過后再關(guān)閉該鏈接來釋放資源。頻繁的新建打開再關(guān)閉連接對jvm和數(shù)據(jù)庫都...
    野柳閱讀 6,408評論 1 11
  • 前言 數(shù)據(jù)庫連接池在Java數(shù)據(jù)庫相關(guān)中間件產(chǎn)品群中,應(yīng)該算是底層最基礎(chǔ)的一類產(chǎn)品,作為企業(yè)應(yīng)用開發(fā)必不可少的組件...
    許da廣閱讀 7,212評論 2 27
  • 本文包括傳統(tǒng)JDBC的缺點連接池原理自定義連接池開源數(shù)據(jù)庫連接池DBCP連接池C3P0連接池Tomcat內(nèi)置連接池...
    廖少少閱讀 16,783評論 0 37
  • “錢錢錢,你們男人就知道錢,把錢看那么重,活著不累嗎?” 想起丫頭剛剛在電話里不屑的聲音,賈子虛又懊惱的拍了下桌子...
    老貓solo閱讀 797評論 32 9