一、Hibernate with Proxool
1、基本环境搭建
Hibernate 必须jar包,Porxool以0.9.1为列,将proxool-0.9.1.jar、proxool-cglib.jar放入classpath中
2、hibernate配置文件
以oracle 10为例
<?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"> <hibernate-configuration> <session-factory> <!-- 连接池 --> <property name="hibernate.proxool.pool_alias">dbpool</property> <property name="hibernate.proxool.xml">proxool.xml</property> <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <property name="current_session_context_class">thread</property> <property name="hbm2ddl.auto">update</property> <property name="show_sql">false</property> <property name="format_sql">true</property> <!-- 二级缓 --> <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.use_query_cache">true</property> <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <property name="hibernate.generate_statistics">true</property> <property name="hibernate.connection.autocommit">true </property> <!-- mapping --> </session-factory> </hibernate-configuration>
3、proxool配置文件
proxool.xml
<?xml version="1.0" encoding="utf-8"?> <something-else-entirely> <proxool> <alias>dbpool</alias> <driver-url>jdbc:oracle:thin:@xxxx:1521:sid </driver-url> <driver-class>oracle.jdbc.driver.OracleDriver </driver-class> <driver-properties> <property name="user" value="xxxx" /> <property name="password" value="xxxx" /> </driver-properties> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <prototype-count>2</prototype-count> <maximum-connection-count>10</maximum-connection-count> <minimum-connection-count>5</minimum-connection-count> <proxool.simultaneous-build-throttle>100</proxool.simultaneous-build-throttle> <house-keeping-test-sql>select CURRENT_DATE from dual</house-keeping-test-sql> </proxool> </something-else-entirely>
Note:不同数据库<house-keeping-test-sql />写法不一样,比如如果是mysql,select current_date(sysdate)
4、web.xml
连接池监控
<servlet> <servlet-name>proxool</servlet-name> <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>proxool</servlet-name> <url-pattern>/proxool</url-pattern> </servlet-mapping>
可以通过http://xxxx:port/xxx/proxool 查看连接池的具体情况
参考:
http://proxool.sourceforge.net/
二、Hibernate with C3P0
C3P0为HB默认的连接池。
1、所需C3P0 jar包,(c3p0-0.9.1.2.jar)
2、hibernate配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- org.hibernate.dialect.OracleDialect --> <property name="hibernate.dialect"> org.hibernate.dialect.OracleDialect </property> <property name="hibernate.connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="hibernate.connection.url"> jdbc:oracle:thin:@xxxx:1521:sid </property> <property name="hibernate.connection.username"> username </property> <property name="hibernate.connection.password"> password </property> <!-- this property is for JNDI --> <!-- <property name="hibernate.session_factory_name"> hibernate/SessionFactory </property> --> <!-- this property is for JNDI --> <!-- <property name="hibernate.connection.datasource">java:comp/env/jdbc/ssoportal</property> --> <property name="hibernate.show_sql">true</property> <!-- Bind the getCurrentSession() method to the thread. If the value is managed, the session should be closed manually after a transaction --> <property name="current_session_context_class">thread</property> <!-- Hibernate annotation mapping classes --> </session-factory> </hibernate-configuration>