熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Hibernate DBpool Configure

2022-06-13   來源: Java開源技術 
在hibernate已經不再支持dbcp了hibernate的作者在中明確指出在實踐中發現dbcp有BUG在某些種情會產生很多空連接不能釋放所以拋棄了對dbcp的支持至於cp有評論說它的算法不是最優的cp占用資源比較大效率也不高 proxool不少行家推薦使用而且暫時來說是負面評價是最少的一個

以連接MySQl為例介紹三種連接配置方法

<! JDBC驅動程序 >
<property name=connectiondriver_class>orggjtmmmysqlDriver
</property>
<property name=connectionurl>jdbc:mysql://localhost:/struts?useUnicode=true&characterEncoding=GBK
</property>
<property name=connectionusername>root</property><! 數據庫用戶名 >
<property name=connectionpassword></property> <! 數據庫密碼 >

上面的一段配置在cp和dbcp中都是必需的因為hibernate會根據上述的配置來生成connections再交給cp或dbcp管理但是proxool則不能

CP

只需在hibernatecfgxml中加入
<property name=cpmin_size></property>
<property name=cpmax_size></property>
<property name=cptime_out></property>
<property name=cpmax_statement></property>

還有在classespath中加入cpjar


dbcp

在hibernatecfgxml中加入

<property name=dbcpmaxActive></property>
<property name=dbcpwhenExhaustedAction></property>
<property name=dbcpmaxWait></property>
<property name=dbcpmaxIdle></property>
<property name=dbcppsmaxActive></property>
<property name=dbcppswhenExhaustedAction></property>
<property name=dbcppsmaxWait></property>
<property name=dbcppsmaxIdle></property>

還有在classespath中加入commonspooljar 和commonsdbcpjar


proxool

在hibernatecfgxml中加入

<property name=proxoolpool_alias>pool</property>
<property name=proxoolxml>ProxoolConfxml</property>
<property name=connectionprovider_class>nnectionProxoolConnectionProvider</property>

然後在和hibernatecfgxml同一個目錄下加一個ProxoolConfxml文件內容為

<?xml version= encoding=utf?>
<! the proxool configuration can be embedded within your own applicationsAnything outside the proxool tag is ignored >
<somethingelseentirely>
<proxool>
<alias>pool</alias>
<!proxool只能管理由自己產生的連接>
<driverurl>jdbc:mysql://localhost:/struts?useUnicode=true&characterEncoding=GBK</driverurl>
<driverclass>orggjtmmmysqlDriver</driverclass>
<driverproperties>
<property name=user value=root/>
<property name=password value=/>
</driverproperties>
<! proxool自動偵察各個連接狀態的時間間隔(毫秒)偵察到空閒的連接就馬上回收超時的銷毀>
<housekeepingsleeptime></housekeepingsleeptime>
<! 指因未有空閒連接可以分配而在隊列中等候的最大請求數超過這個請求數的用戶連接就不會被接受>
<maximumnewconnections></maximumnewconnections>
<! 最少保持的空閒連接數>
<prototypecount></prototypecount>
<! 允許最大連接數超過了這個連接再有請求時就排在隊列中等候最大的等待請求數由maximumnewconnections決定>
<maximumconnectioncount></maximumconnectioncount>
<! 最小連接數>
<minimumconnectioncount></minimumconnectioncount>
</proxool>
</somethingelseentirely>

並在classespath中加入proxooljar

如果用的是hibernate在myeclipse中導入hibernate包時同時導入advanced support 類庫則裡面已經有好幾個連接池可以用了如cpproxool等只要稍微配置下就可以配置下日志(logjproperties)你就可以詳細的看到連接池運行的過程了
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27953.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.