Hibernate 连接池的配置方式

开发 后端
本文首先讲到了Hibernate 连接池有三种配置方式,然后着重讲述了其中最为常用的两种,即CSP0配置和使用prixool。

本文主要内容:Hibernate 连接池有三种配置方式:dbcp , c3p0 , proxool。URL的多种指定方式连接池监控,上班第二天,看到公司的Hibernate连接池配置文件在写法上,跟我以前的不一样,就去研究了哈,得出的结果如下。

在Hibernate3.0中,已经不再支持dbcp了,Hibernate的作者在Hibernate.org中,明确指出在实践中发现dbcp有BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。

一、Hibernate 连接池:C3P0 配置

  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. <!-- 配置JDBC里batch的大小 --> 
  12. <property name="jdbc.batch_size">50</property> 
  13. <property name="cache.use_second_level_cache">false</property> 
  14. <!-- 配置线程安全的session --> 
  15. <property name="current_session_context_class">thread</property> 
  16. <!-- 显示SQL --> 
  17. <property name="show_sql">true</property> 
  18. <property name="format_sql">true</property> 
  19. <!-- 配置数据库方言 --> 
  20. <property name="dialect">org.Hibernate.dialect.Oracle9Dialect</property> 
  21. <!-- 配置数据库连接 --> 
  22. <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
  23. <property name="connection.username">0804</property> 
  24. <property name="connection.password">0804</property> 
  25. <property name="connection.url">jdbc:oracle:thin:@192.168.0.200:1521:orcl</property> 
  26. <!-- 配置连接池 --> 
  27. <property name="c3p0.max_size">2</property> 
  28. <property name="c3p0.min_size">2</property> 
  29. <property name="c3p0.timeout">5000</property> 
  30. <property name="c3p0.max_statements">100</property> 
  31. <property name="c3p0.idle_test_period">3000</property> 
  32. <property name="c3p0.acquire_increment">2</property> 
  33. <property name="c3p0.validate">false</property> 
  34. <!-- 指定Hibernate管理的映射文件 --> 
  35. <mapping resource="com/ket/ruan/so/entity/User.hbm.xml"/> 
  36. <mapping resource="com/ket/ruan/so/entity/Product.hbm.xml"/> 
  37. </session-factory> 
  38. </Hibernate-configuration> 

二、Hibernate 连接池:使用proxool

  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. <!-- 配置proxool属性 --> 
  8. <!--- 使用proxoolConf.xml中定义的别名 --> 
  9. <property name="proxool.pool_alias">pool1</property> 
  10. <!-- 指定使用的proxoolConf文件的位置(这里在SRC下)--> 
  11. <property name="proxool.xml">ProxoolConf.xml</property> 
  12. <property name="connection.provider_class"> 
  13. org.Hibernate.connection.ProxoolConnectionProvider  
  14. </property> 
  15. ....  
  16. <!-- 指定Hibernate管理的映射文件 --> 
  17. <mapping resource="com/ket/ruan/so/entity/User.hbm.xml"/> 
  18. ....  
  19. </Hibernate-configuration> 

1.ProxoolConf.xml:xml文件放在同级目录中,需要 proxool-0.8.3.jar。

  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> 

2.数据库名可以这样指定

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

3.URL 还可以传参数

  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用法,被大部分人认为是***秀的。

4.连接池监控

1).在web.xml中加上下面这段

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

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

 

【编辑推荐】

  1. 初学者适用的Hibernate学习方法
  2. Hibernate实战(第2版)读书笔记
  3. Hibernate一对多关系的处理
  4. 十五道Hibernate面试题及答案
  5. Hibernate的性能优化
责任编辑:仲衡 来源: 百度博客
相关推荐

2009-06-17 16:22:45

Hibernate连接

2009-09-22 16:04:50

Hibernate连接

2009-09-22 14:52:55

Hibernate p

2009-06-24 07:53:47

Hibernate数据

2015-04-27 09:50:45

Java Hibern连接池详解

2009-06-17 09:34:31

Hibernate3Hibernate2连接池

2009-09-22 14:57:34

Hibernate d

2010-05-17 16:38:08

MySQL 连接池

2011-05-13 09:34:51

TomcatMysql连接池

2019-12-30 15:30:13

连接池请求PHP

2010-11-08 16:46:57

2009-06-16 09:25:31

JBoss配置

2009-07-09 17:36:44

JDBC连接池配置

2011-06-01 13:54:10

MySQL

2010-06-25 10:36:27

Java连接池

2020-02-03 15:15:27

Druid连接池性能超出竞品

2018-02-07 16:23:58

连接池内存池AI

2022-11-11 09:41:04

连接池微服务数据库

2010-05-21 09:48:30

java jsp to

2009-09-22 14:44:18

Hibernate.c
点赞
收藏

51CTO技术栈公众号