最为常见的三种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的标准扩展)