Hibernate自帶的連接池算法相當不成熟 它只是為了讓你快些上手並不適合用於產品系統或性能測試中 出於最佳性能和穩定性考慮你應該使用第三方的連接池只需要用特定連接池的設置替換 nnectionpool_size即可這將關閉Hibernate自帶的連接池 例如 你可能會想用CP
CP是一個隨Hibernate一同分發的開源的JDBC連接池 它位於lib目錄下 如果你設置了hibernatecp*相關的屬性 Hibernate將使用 CPConnectionProvider來緩存JDBC連接 如果你更原意使用Proxool 請參考發 行包中的hibernateproperties並到Hibernate網站獲取更多的信息
這是一個使用CP的hibernateproperties樣例文件(來自Hibernate包中etc目錄下)
###########################
### CP Connection Pool###
###########################
#hibernatecpmax_size
#hibernatecpmin_size
#hibernatecptimeout
#hibernatecpmax_statements
#hibernatecpidle_test_period
#hibernatecpacquire_increment
#hibernatecpvalidate false
在hibernatecfgxml文件裡面加入如下的配置
<! 最大連接數 >
<property name=hibernatecpmax_size></property>
<! 最小連接數 >
<property name=hibernatecpmin_size></property>
<! 獲得連接的超時時間如果超過這個時間會拋出異常單位毫秒 >
<property name=hibernatecptimeout></property>
<! 最大的PreparedStatement的數量 >
<property name=hibernatecpmax_statements></property>
<! 每隔秒檢查連接池裡的空閒連接 單位是秒>
<property name=hibernatecpidle_test_period></property>
<! 當連接池裡面的連接用完的時候CP一下獲取的新的連接數 >
<property name=hibernatecpacquire_increment></property>
<! 每次都驗證連接是否可用 >
<property name=hibernatecpvalidate>true</property>
完整示例如下(hibernateproperties)
nnectiondriver_class = orgpostgresqlDriver
nnectionurl = jdbc:postgresql://localhost/mydatabase
nnectionusername = myuser
nnectionpassword = secret
hibernatecpmin_size=
hibernatecpmax_size=
hibernatecptimeout=
hibernatecpmax_statements=
hibernatedialect = orghibernatedialectPostgreSQLDialect
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28519.html