=================== C3P0 配置 =============================
- <? 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 = "transaction.factory_class" >
- org.hibernate.transaction.JDBCTransactionFactory
- </ property >
- <!-- 配置JDBC里batch的大小 -->
- < property name = "jdbc.batch_size" > 50 </ property >
- < property name = "cache.use_second_level_cache" > false </ property >
- <!-- 配置线程安全的session -->
- < property name = "current_session_context_class" > thread </ property >
- <!-- 显示SQL -->
- < property name = "show_sql" > true </ property >
- < property name = "format_sql" > true </ property >
- <!-- 配置数据库方言 -->
- < property name = "dialect" > org.hibernate.dialect.Oracle9Dialect </ property >
- <!-- 配置数据库连接 -->
- < property name = "connection.driver_class" > oracle.jdbc.driver.OracleDriver </ property >
- < property name = "connection.username" > 0804 </ property >
- < property name = "connection.password" > 0804 </ property >
- < property name = "connection.url" > jdbc:oracle:thin:@192.168.0.200:1521:orcl </ property >
- <!-- 配置连接池 -->
- < property name = "c3p0.max_size" > 2 </ property >
- < property name = "c3p0.min_size" > 2 </ property >
- < property name = "c3p0.timeout" > 5000 </ property >
- < property name = "c3p0.max_statements" > 100 </ property >
- < property name = "c3p0.idle_test_period" > 3000 </ property >
- < property name = "c3p0.acquire_increment" > 2 </ property >
- < property name = "c3p0.validate" > false </ property >
- <!-- 指定hibernate管理的映射文件 -->
- < mapping resource = "com/ket/ruan/so/entity/User.hbm.xml" />
- < mapping resource = "com/ket/ruan/so/entity/Product.hbm.xml" />
- 。。。。。
- </ session-factory >
- </ hibernate-configuration >
2 ============= 使用 proxool =============================
- < hibernate-configuration >
- < session-factory >
- < property name = "show_sql" > true </ property >
- < property name = "dialect" >
- org.hibernate.dialect.MySQLDialect
- </ property >
- <!-- 配置proxool属性 -->
- <!--- 使用proxoolConf.xml中定义的别名 -->
- < property name = "proxool.pool_alias" > pool1 </ property >
- <!-- 指定使用的proxoolConf文件的位置(这里在SRC下)-->
- < property name = "proxool.xml" > ProxoolConf.xml </ property >
- < property name = "connection.provider_class" >
- org.hibernate.connection.ProxoolConnectionProvider
- </ property >
- ....
- <!-- 指定hibernate管理的映射文件 -->
- < mapping resource = "com/ket/ruan/so/entity/User.hbm.xml" />
- ....
- </ hibernate-configuration >
------------ProxoolConf.xml--------------------
xml 文件放在同级目录中
需要 proxool-0.8.3.jar
- <? xml version = "1.0" encoding = "gb2312" ?>
- < something-else-entirely >
- < proxool >
- < alias > pool1 </ alias >
- < driver-url >
- jdbc:mysql://tpdb:3306/tpdb
- </ driver-url >
- < driver-class > com.mysql.jdbc.Driver </ driver-class >
- < driver-properties >
- < property name = "user" value = "username" />
- < property name = "password" value = "password" />
- < property name = "schema" value = "tpdb" /> <!-- ???-->
- <!-- 自动重连 -->
- < property name = "autoReconnect" value = "true" />
- </ driver-properties >
- <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),
- 侦察到空闲的连接就马上回收,超时的销毁-->
- < house-keeping-sleep-time > 90000 </ house-keeping-sleep-time >
- <!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的
- 用户连接就不会被接受(正式库10,测试库1)-->
- < maximum-new-connections > 10 </ maximum-new-connections >
- <!-- 最少保持的空闲连接数(正式库10,测试库1)-->
- < prototype-count > 10 </ prototype-count >
- <!-- 连接池允许的最大连接数(正式库700,测试库10)-->
- < maximum-connection-count > 700 </ maximum-connection-count >
- <!-- 连接池开启的最小连接数(正式库350,测试库5)-->
- < minimum-connection-count > 350 </ minimum-connection-count >
- <!-- 一个活动连接的最长时间15分钟,单位毫秒 -->
- < maximum-active-time > 900000 </ maximum-active-time >
- <!-- 一个连接的最长活动时间4小时,单位毫秒 -->
- < maximum-connection-lifetime > 14400000 </ maximum-connection-lifetime >
- <!-- 自动检查连接是否断掉开关 -->
- < test-before-use > true </ test-before-use >
- <!-- 自动检查连接是否断的测试sql语句 -->
- < house-keeping-test-sql > select sysdate() from dual </ house-keeping-test-sql >
- </ proxool >
- </ something-else-entirely >
============ 数据库名可以这样指定 ==============
- < property name = "connection.url" >
- jdbc:sqlserver://localhost:1433;DatabaseName = supermarket
- </ property >
==============URL 还可以传参数===================
- < property name = "connection.driver_class" > org.gjt.mm.mysql.Driver </ property >
- < property name = "connection.url" >
- jdbc:mysql://localhost:3306/struts?useUnicode = true & characterEncoding = GBK
- </ property >
目前,proxool用法,被大部分人认为是最优秀的。
=========== 连接池监控 ===================
1.在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 > /Admin/proxool/ </ url-pattern >
- </ servlet-mapping >
2.http://localhost:8080/testhibernate/Admin/proxool
就可以监控到连接池的状况了!