数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Hibernate DBpool Configure


发布日期:2020年09月17日
 
Hibernate DBpool Configure
在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)你就可以详细的看到连接池运行的过程了

上一篇:Spring 通过JDBC配置数据库

下一篇:eclipse下有用的包JadClipse和FindBugs