返回列表 发帖

[原创] Hibernate+Proxool配置

由于项目需求的需要,我们引入了连接池。数据库连接池的最大好处是节省开销。我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0Proxool连接池,在我们的项目中采用了Proxool。因此,出现了我下面的工作。
首先去官方网站下载jar包,地址:http://sourceforge.net/projects/proxool ,我选用的是最新版本的proxool-0.9.0RC3.jar,查了一下网上有人说新版本兼容性不好可能会出问题,我测试了一下觉得没有。将此jar包让放入项目的classpath或者WEB-INF/lib下面。
然后在hibernate.cfg.xml平级的目录中新增加一个Proxool的配置文件Proxool.xml

<?xml version="1.0" encoding="UTF-8"?>


<!-- the proxool configuration can be embedded within your own application's.



Anything outside the "proxool" tag is ignored. -->


<something-else-entirely>



<proxool>



<alias>DBPool</alias>



<driver-url>



jdbc:mysql://localhost:3306/
工程名?useUnicode=true&characterEncoding=UTF-8



</driver-url>



<driver-class>com.mysql.jdbc.Driver</driver-class>



<driver-properties>



<property name="user" value="*** " />



<property name="password" value="*** " />



</driver-properties>



<house-keeping-sleep-time>90000</house-keeping-sleep-time>



<maximum-new-connections>20</maximum-new-connections>



<prototype-count>5</prototype-count>



<maximum-connection-count>100</maximum-connection-count>



<minimum-connection-count>10</minimum-connection-count>




</proxool>


</something-else-entirely>



其中有几个地方需要注意:
1<alias>DBPool</alias> 这个是给连接池取一个别名,在hibernate配置文件中将引用这个别名。

2
<driver-url>



jdbc:mysql://localhost:3306/
工程名?useUnicode=true&characterEncoding=UTF-8



</driver-url>


这个是驱动的路径,我们的项目采用了mysql,使用其余数据库需要更改成对应的。还有需要注意的是工程名要以数据库名为准。
3<driver-class>om.mysql.jdbc.Driver</driver-class>
这个是数据库驱动类,不同的数据库采用不同的驱动类,即使采用同一种数据库也有多种驱动类,所以一定要选取准确。

4
<driver-properties>



<property name="user" value="*** " />



<property name="password" value="*** " />



</driver-properties>


这个显示数据库的用户名和密码。
5<house-keeping-sleep-time>90000</house-keeping-sleep-time>
这个显示proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁

6<maximum-new-connections>20</maximum-new-connections>


这个 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受

7<prototype-count>5</prototype-count>


这个显示最少保持的空闲连接数
8<maximum-connection-count>100</maximum-connection-count>
这个显示允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定
9<minimum-connection-count>10</minimum-connection-count>
这个显示最小连接数

最后需要注意的是不要在这个配置文件里面写注释,不然会报如下的错误:
org.hibernate.HibernateException: Proxool Provider unable to load JAXP configurator file: Proxool.xml
Caused by: org.logicalcobwebs.proxool.ProxoolException: Parsing failed.
Caused by: org.xml.sax.SAXParseException: The string "--" is not permitted within comments.

     接下来就是在hibernate.cfg.xml中改配置即可

<?xml version='1.0' encoding='UTF-8'?>


<!DOCTYPE hibernate-configuration PUBLIC



"-//Hibernate/Hibernate Configuration DTD 3.0//EN"



"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">



<!-- Generated by MyEclipse Hibernate Tools.
-->


<hibernate-configuration>




<session-factory>



<property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>



<property name="hibernate.proxool.pool_alias">DBPool</property>



<property name="hibernate.proxool.xml">Proxool.xml</property>




<property name="dialect">



org.hibernate.dialect.MySQLDialect



</property>



<property name="connection.driver_class">



com.mysql.jdbc.Driver



</property>



<mapping resource="hibernate.cfg.xml" />


      


       这里放Hibernate的映射文件


</session-factory>



</hibernate-configuration>

有一点很重要Proxool.xml路径一定要正确。这里放hibernate的映射文件
如果依次采取以上的步骤,那么恭喜你,Proxool已经配置完毕,可以测试了。

[ 本帖最后由 风灵风之子 于 2007-11-22 01:51 编辑 ]
1

评分人数

天行健,君子以自强不息
地势坤,君子以厚德载物
   黑色海岸线欢迎您

顶下LZ
项目结束写份总结来学习下

TOP

支持!!

TOP

返回列表 回复 发帖