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 = orgpostgresqlDrivernnectionurl = jdbc:postgresql://localhost/mydatabase
nnectionusername = myuser
nnectionpassword = secret
hibernatecpmin_size=
hibernatecpmax_size=
hibernatecptimeout=
hibernatecpmax_statements=
hibernatedialect = orghibernatedialectPostgreSQLDialect