Hibernate+Proxool配置

由于项目需求的需要,我们引入了连接池。数据库连接池的最大好处是节省开销。我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们的项目中采用了Proxool。因此,出现了我下面的工作。

首先去官方网站下载jar包,地址:http://sourceforge.net/projects/proxool,我选用的是最新版本的proxool-0.9.0RC3.jar,查了一下网上有人说新版本兼容性不好可能会出问题,我测试了一下觉得没有。将此jar包让放入项目的classpath或者WEB-INF/lib下面。

然后在hibernate.cfg.xml平级的目录中新增加一个Proxool的配置文件Proxool.xml

<?xmlversion="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&amp;characterEncoding=UTF-8

      </driver-url>

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

      <driver-properties>

          <propertyname="user"value="*** "/>

          <propertyname="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&amp;characterEncoding=UTF-8

      </driver-url>

这个是驱动的路径,我们的项目采用了mysql,使用其余数据库需要更改成对应的。还有需要注意的是工程名要以数据库名为准。

3)<driver-class>om.mysql.jdbc.Driver</driver-class>

这个是数据库驱动类,不同的数据库采用不同的驱动类,即使采用同一种数据库也有多种驱动类,所以一定要选取准确。

4)   <driver-properties>

          <propertyname="user"value="*** "/>

          <propertyname="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中改配置即可

<?xmlversion='1.0'encoding='UTF-8'?>

<!DOCTYPEhibernate-configurationPUBLIC

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

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

<hibernate-configuration>

   <session-factory>

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

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

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

 

      <propertyname="dialect">     

          org.hibernate.dialect.MySQLDialect

      </property>

      <propertyname="connection.driver_class">

          com.mysql.jdbc.Driver

      </property>

      <mappingresource="hibernate.cfg.xml"/>

       这里放Hibernate的映射文件

   </session-factory>

</hibernate-configuration>

有一点很重要Proxool.xml路径一定要正确.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值