hibernate 中的数据库连接池技术

=================== C3P0 配置 =============================

Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.   "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   
  5. < hibernate-configuration >   
  6.     < session-factory >   
  7.     <!-- 配置事务实现方式 -->    
  8.      < property   name = "transaction.factory_class" >   
  9.        org.hibernate.transaction.JDBCTransactionFactory                               
  10.      </ property >   
  11.      
  12.     <!-- 配置JDBC里batch的大小 -->   
  13.       < property   name = "jdbc.batch_size" > 50 </ property >   
  14.       < property   name = "cache.use_second_level_cache" > false </ property >   
  15.      
  16.     <!-- 配置线程安全的session -->   
  17.      < property   name = "current_session_context_class" > thread </ property >   
  18.      
  19.       <!-- 显示SQL -->   
  20.       < property   name = "show_sql" > true </ property >   
  21.       < property   name = "format_sql" > true </ property >   
  22.        
  23.       <!-- 配置数据库方言 -->   
  24.       < property   name = "dialect" > org.hibernate.dialect.Oracle9Dialect </ property >   
  25.        
  26.       <!-- 配置数据库连接 -->   
  27.       < property   name = "connection.driver_class" > oracle.jdbc.driver.OracleDriver </ property >   
  28.       < property   name = "connection.username" > 0804 </ property >   
  29.       < property   name = "connection.password" > 0804 </ property >   
  30.       < property   name = "connection.url" > jdbc:oracle:thin:@192.168.0.200:1521:orcl </ property >   
  31.       
  32.       <!-- 配置连接池 -->   
  33.       < property   name = "c3p0.max_size" > 2 </ property >   
  34.       < property   name = "c3p0.min_size" > 2 </ property >   
  35.       < property   name = "c3p0.timeout" > 5000 </ property >   
  36.       < property   name = "c3p0.max_statements" > 100 </ property >   
  37.       < property   name = "c3p0.idle_test_period" > 3000 </ property >   
  38.       < property   name = "c3p0.acquire_increment" > 2 </ property >   
  39.       < property   name = "c3p0.validate" > false </ property >   
  40.        
  41.      <!-- 指定hibernate管理的映射文件 -->   
  42.       < mapping   resource = "com/ket/ruan/so/entity/User.hbm.xml" />    
  43.       < mapping   resource = "com/ket/ruan/so/entity/Product.hbm.xml" />    
  44.       。。。。。  
  45.     </ session-factory >   
  46. </ hibernate-configuration >   



2 ============= 使用 proxool =============================

Xml代码
  1. < hibernate-configuration >   
  2. < session-factory >   
  3.  < property   name = "show_sql" > true </ property >   
  4.  < property   name = "dialect" >   
  5.   org.hibernate.dialect.MySQLDialect  
  6.  </ property >   
  7.    
  8.  <!-- 配置proxool属性 -->   
  9.  <!--- 使用proxoolConf.xml中定义的别名 -->   
  10.  < property   name = "proxool.pool_alias" > pool1 </ property >   
  11.  <!-- 指定使用的proxoolConf文件的位置(这里在SRC下)-->   
  12.  < property   name = "proxool.xml" > ProxoolConf.xml </ property >   
  13.  < property   name = "connection.provider_class" >   
  14.  org.hibernate.connection.ProxoolConnectionProvider  
  15.  </ property >   
  16.  ....  
  17.  <!-- 指定hibernate管理的映射文件 -->   
  18.   < mapping   resource = "com/ket/ruan/so/entity/User.hbm.xml" />    
  19.   ....  
  20. </ hibernate-configuration >   



  ------------ProxoolConf.xml--------------------

  xml 文件放在同级目录中
  需要 proxool-0.8.3.jar

Xml代码
  1. <? xml   version = "1.0"   encoding = "gb2312" ?>   
  2. < something-else-entirely >   
  3. < proxool >   
  4. < alias > pool1 </ alias >   
  5. < driver-url >   
  6.    jdbc:mysql://tpdb:3306/tpdb  
  7. </ driver-url >   
  8. < driver-class > com.mysql.jdbc.Driver </ driver-class >   
  9. < driver-properties >   
  10. < property   name = "user"   value = "username" />   
  11. < property   name = "password"   value = "password" />   
  12. < property   name = "schema"    value = "tpdb" />    <!-- ???-->   
  13. <!-- 自动重连 -->   
  14. < property   name = "autoReconnect"   value = "true" />   
  15. </ driver-properties >   
  16. <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),  
  17. 侦察到空闲的连接就马上回收,超时的销毁-->   
  18. < house-keeping-sleep-time > 90000 </ house-keeping-sleep-time >   
  19. <!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的  
  20. 用户连接就不会被接受(正式库10,测试库1)-->   
  21. < maximum-new-connections > 10 </ maximum-new-connections >   
  22. <!-- 最少保持的空闲连接数(正式库10,测试库1)-->   
  23. < prototype-count > 10 </ prototype-count >   
  24. <!-- 连接池允许的最大连接数(正式库700,测试库10)-->   
  25. < maximum-connection-count > 700 </ maximum-connection-count >   
  26. <!-- 连接池开启的最小连接数(正式库350,测试库5)-->   
  27. < minimum-connection-count > 350 </ minimum-connection-count >   
  28. <!-- 一个活动连接的最长时间15分钟,单位毫秒 -->   
  29. < maximum-active-time > 900000 </ maximum-active-time >   
  30. <!-- 一个连接的最长活动时间4小时,单位毫秒 -->   
  31. < maximum-connection-lifetime > 14400000 </ maximum-connection-lifetime >   
  32. <!-- 自动检查连接是否断掉开关 -->   
  33. < test-before-use > true </ test-before-use >   
  34. <!-- 自动检查连接是否断的测试sql语句 -->   
  35. < house-keeping-test-sql > select sysdate() from dual </ house-keeping-test-sql >   
  36. </ proxool >   
  37. </ something-else-entirely >   




============ 数据库名可以这样指定 ==============

Xml代码
  1. < property   name = "connection.url" >   
  2.    jdbc:sqlserver://localhost:1433;DatabaseName = supermarket   
  3. </ property >   



==============URL 还可以传参数===================

Xml代码
  1. < property   name = "connection.driver_class" > org.gjt.mm.mysql.Driver </ property >   
  2. < property   name = "connection.url" >   
  3. jdbc:mysql://localhost:3306/struts?useUnicode = true & characterEncoding = GBK   
  4. </ property >   


目前,proxool用法,被大部分人认为是最优秀的。



===========  连接池监控 ===================
1.在web.xml中加上下面这段

       
Xml代码
  1. < servlet >   
  2.                 < servlet-name >  proxool  </ servlet-name >   
  3.                 < servlet-class >                 org.logicalcobwebs.proxool.admin.servlet.AdminServlet       
  4.   
  5.    </ servlet-class >   
  6.         </ servlet >   
  7.         < servlet-mapping >   
  8.                 < servlet-name >  proxool  </ servlet-name >   
  9.                 < url-pattern >  /Admin/proxool/  </ url-pattern >   
  10.         </ servlet-mapping >   



2.http://localhost:8080/testhibernate/Admin/proxool
就可以监控到连接池的状况了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值