hibernate的数据库连接池技术

来源:互联网 发布:恢复手机联系人软件 编辑:程序博客网 时间:2024/06/05 16:13

最为常见的三种JDBC连接池技术为Proxool,C3P0和DBCP技术。

Hibernate官方宣布DBCP由于Bug太多而不再支持。推荐使用Proxool or C3P0.

Proxool技术在Hibernate中的配置如下:

1.建立一个xml文件proxool.xml。路径在src下。hibernate.cfg.xml也是

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

<something-else-entirely>

<proxool>

   <alias>myProxool</alias>这个别名要与hibernate.cfg.xml中的hibernate.proxool.pool_alias要保持一致

   <driver-url>*******</driver-url>即数据库的url。各个数据库不同的

   <driver-class>****</driver-class>数据库的驱动类

   <driver-properties>有两个属性。user和password

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

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

   </driver-properties>

    <house-keeping-test-sql></house-keeping-test-sql>如有空闲连接。house keeper用该语句测试。

    <house-keeping-sleep-time></house-keeping-sleep-time>house keeper保留线程处于睡眠状态的最长时间。house keeper就是检查数据库各个连接的状态,判断是否需要销毁或创建

<simultaneous-build-throttle>20</simultaneous-build-throttle> 可一次建立的最大连接数

  <maximum-connection-count>100</maximum-connection-count> 最大数据库连接数

  <minimum-connection-count>10</minimum-connection-count> 最小数据库连接数

  <maximum-connection-lifetime>3600000</maximum-connection-lifetime>线程的最大寿命周期

</proxool>

</something-else-entirely>

2.hibernate.cfg.xml中配置连接池相关

<hibernate-configuration>

  <session-factory>

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

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

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

      <property name="hibernate.proxool.existing_pool">true</property>

      <property name="dialect"></property>

     <property name="hibernate.cache.use_query_cache">true</property>

</session-factory>

</hibernate-configuration>

</session-factory>

</hibernate-configuration>

3配置web.xml中的servlet

<servlet>

   <servlet-name>ServletConfigurator</servlet-name>

   <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>

   <init-param>

   <param-name>xmlFile</param-name>

  <param-value>/WEB-INF/classes/proxool.xml</param-value>

</init-param>

  <load-on-startup>1</load-on-startup>

</servlet>

注意:如果同时配置了web.xml和hibernate.cfg.xml会产生错误:

  org.logicalcobwebs.proxool.ProxoolException: Parsing failed.

  因为同名的proxool连接池已经启动,而hibernate开始运行时会自己启动关联的proxool连接池.

  所以此时应改变hibernate.cfg.xml配置为:

  <property name="hibernate.proxool.existing_pool">true</property>

</servlet>

 

c3p0的配置(实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展)

  1. <!-- 配置连接池 -->  
  2.       <property name="c3p0.max_size">2</property>  
  3.       <property name="c3p0.min_size">2</property>  
  4.       <property name="c3p0.timeout">5000</property>  
  5.       <property name="c3p0.max_statements">100</property>  
  6.       <property name="c3p0.idle_test_period">3000</property>  
  7.       <property name="c3p0.acquire_increment">2</property>  
  8.       <property name="c3p0.validate">false</property> 
原创粉丝点击