文档章节

Hibernate c3p0 数据库连接池

boonya
 boonya
发布于 2014/07/14 16:11
字数 1555
阅读 137
收藏 2

From :http://www.codeweblog.com/hibernate-using-c3p0-connection-pooling/

c3p0是开源JDBC连接池,Hibernate的发布版也有此功能。这篇文章描述怎样使用Hibernate来配置从c3p0。C3p0连接池配置很简单,只需要添加如下内容到 hibernate.cfg.xml文件:(原文:c3p0 for open source's JDBC connection pool, with the release hibernate. This article describes how to use the hibernate configuration in c3p0. c3p0 connection pool configuration is very simple, only needs to increase in hibernate.cfg.xml: 

<property name="hibernate.c3p0.max_size"> 20 </ property> 

<! - The smallest number of connections -> 
<property name="hibernate.c3p0.min_size"> 5 </ property> 

<! - Get connection timeout, if more than this time will be thrown, unit ms -> 
<property name="hibernate.c3p0.timeout"> 120 </ property> 

<! - The largest number of PreparedStatement -> 
<property name="hibernate.c3p0.max_statements"> 100 </ property> 

<! - Every 120 seconds to connect the pond to check the idle connection, units are seconds ->
<property name="hibernate.c3p0.idle_test_period"> 120 </ property> 

<! - When the connection inside the connection pool run out of time, C3P0 click access to the new connections -> 
<property name="hibernate.c3p0.acquire_increment"> 2 </ property> 

<! - Every time, verify the connection is available -> 
<property name="hibernate.c3p0.validate"> true </ property>

       此外,需要在CLASS_PATH中添加c3p0-xxx.jar文件,c3p0-xxx.jar的文档发布在Hibernate的conjunction下,你可以在它的lib目录下找到文件。(原文:In addition, where necessary in CLASS_PATH add c3p0-xxxjar file (xxx is version number), c3p0-xxxjar document released in conjunction with hibernate, you may, in its lib directory to find the file.

       配置完成之后,Hibernate将可以动态地使用c3p0连接池: C3P0ConnectionProvider(原文:After configuration, hibernate will automatically use the c3p0 connection pool: C3P0ConnectionProvider


另附Hibernate c3p0的详细配置,摘自其他网站内容:

<c3p0-config> 
  <default-config> 
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> 
<property name="acquireIncrement">3</property> 

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --> 
<property name="acquireRetryAttempts">30</property> 

<!--两次连接中间隔时间,单位毫秒。Default: 1000 --> 
<property name="acquireRetryDelay">1000</property> 

<!--连接关闭时默认将所有未提交的操作回滚。Default: false --> 
<property name="autoCommitOnClose">false</property> 

<!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么 
  属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试 
  使用。Default: null--> 
<property name="automaticTestTable">Test</property> 

<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 
  保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 
  获取连接失败后该数据源将申明已断开并永久关闭。Default: false--> 
<property name="breakAfterAcquireFailure">false</property> 

<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出 
  SQLException,如设为0则无限期等待。单位毫秒。Default: 0 --> 
<property name="checkoutTimeout">100</property> 

<!--通过实现ConnectionTester或QueryConnectionTester的类来测试连接。类名需制定全路径。 
  Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester--> 
<property name="connectionTesterClassName"></property> 

<!--指定c3p0 libraries的路径,如果(通常都是这样)在本地即可获得那么无需设置,默认null即可 
  Default: null--> 
<property name="factoryClassLocation">null</property> 

<!--Strongly disrecommended. Setting this to true may lead to subtle and bizarre bugs. 
  (文档原文)作者强烈建议不使用的一个属性--> 
<property name="forceIgnoreUnresolvedTransactions">false</property> 

<!--每60秒检查所有连接池中的空闲连接。Default: 0 --> 
<property name="idleConnectionTestPeriod">60</property> 

<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> 
<property name="initialPoolSize">3</property> 

<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --> 
<property name="maxIdleTime">60</property> 

<!--连接池中保留的最大连接数。Default: 15 --> 
<property name="maxPoolSize">15</property> 

<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 
  属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。 
  如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0--> 
<property name="maxStatements">100</property> 

<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0  --> 
<property name="maxStatementsPerConnection"></property> 

<!--c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能 
  通过多线程实现多个操作同时被执行。Default: 3--> 
<property name="numHelperThreads">3</property> 

<!--当用户调用getConnection()时使root用户成为去获取连接的用户。主要用于连接池连接非c3p0 
  的数据源时。Default: null--> 
<property name="overrideDefaultUser">root</property> 

<!--与overrideDefaultUser参数对应使用的一个参数。Default: null--> 
<property name="overrideDefaultPassword">password</property> 

<!--密码。Default: null--> 
<property name="password"></property> 

<!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意: 
  测试的表必须在初始数据源的时候就存在。Default: null--> 
<property name="preferredTestQuery">select id from test where id=1</property> 

<!--用户修改系统配置参数执行前最多等待300秒。Default: 300 --> 
<property name="propertyCycle">300</property> 

<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 
  时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 
  等方法来提升连接测试的性能。Default: false --> 
<property name="testConnectionOnCheckout">false</property> 

<!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false --> 
<property name="testConnectionOnCheckin">true</property> 

<!--用户名。Default: null--> 
<property name="user">root</property> 

<!--早期的c3p0版本对JDBC接口采用动态反射代理。在早期版本用途广泛的情况下这个参数 
  允许用户恢复到动态反射代理以解决不稳定的故障。最新的非反射代理更快并且已经开始 
  广泛的被使用,所以这个参数未必有用。现在原先的动态反射与新的非反射代理同时受到 
  支持,但今后可能的版本可能不支持动态反射代理。Default: false--> 
<property name="usesTraditionalReflectiveProxies">false</property> 

    <property name="automaticTestTable">con_test</property> 
    <property name="checkoutTimeout">30000</property> 
    <property name="idleConnectionTestPeriod">30</property> 
    <property name="initialPoolSize">10</property> 
    <property name="maxIdleTime">30</property> 
    <property name="maxPoolSize">25</property> 
    <property name="minPoolSize">10</property> 
    <property name="maxStatements">0</property> 
    <user-overrides user="swaldman"> 
    </user-overrides> 
  </default-config> 
  <named-config name="dumbTestConfig"> 
    <property name="maxStatements">200</property> 
    <user-overrides user="poop"> 
      <property name="maxStatements">300</property> 
    </user-overrides> 
   </named-config> 
</c3p0-config>


本文转载自:http://www.codeweblog.com/hibernate-using-c3p0-connection-pooling/

boonya
粉丝 76
博文 280
码字总数 50586
作品 0
成都
高级程序员
私信 提问
C3P0 0.9.2 发布,Java 数据库连接池

著名的 Java 数据库连接池 c3p0 发布了 0.9.2 正式版本,下载地址: c3p0-0.9.2 (二进制) c3p0-0.9.2 (源码) C3P0是一个开放源代码的JDBC连接池,Hibernate的发行包中默认使用此连接池。...

oschina
2013/02/09
2.8K
15
数据库连接池DBCP和C3P0的使用

hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp; hibernate in action推荐使用c3p0; 一. dbcp 在数据库服务器强行关闭连接或数据库服务重启后,无法reconnect 二. dbcp 连接池的创建...

mn_1127
2015/08/27
0
0
C3P0的网友评论

C3P0是一个开放源代码的JDBC连接池,Hibernate的发行包中默认使用此连接池。据说性能最好。 详细的文档在C3P0的下载包中。本站提供最新版的C3P0文档,链接是: http://www.oschina.net/uploa...

红薯
2009/12/11
648
4
hibernate、c3p0、jdbc理解

大家好,请教大家概念问题,hibernate、c3p0、jdbc这三者是什么关系, 我的理解是:hibernate 是对jdbc的封装,可以面向对象(实体类)实现数据操作,jdbc就是java api提供的连接操作数据库的...

樱木花道VS康
2017/06/30
149
2
C3P0 0.9.5.2 发布,数据库连接池

C3P0 0.9.5.2 发布,此版本改进内容如下: -- Fix a bug in MLog bridge to slf4j logging, in which loggability of levels of wrapped loggers was misreported, leading to useless allo......

淡漠悠然
2015/12/10
4.6K
21

没有更多内容

加载失败,请刷新页面

加载更多

centos 设置hostname

1、centos 6 hostname配置文件为 /etc/sysconfig/network 内容为 NETWORKING=yesHOSTNAME=test_hostname hostname是Linux系统下的一个内核参数,它保存在 /proc/sys/kernel/hostname 下,但......

燃犀
35分钟前
1
0
openSUSE

opensuse aliyun镜像 sudo zypper addrepo -f https://mirrors.aliyun.com/opensuse/distribution/leap/15.0/repo/oss/ aliyun-Oss sudo zypper addrepo -f https://mirrors.aliyun.com/ope......

李有常
40分钟前
1
0
五月天 知足 [結他chord譜]

詞曲: 阿信 Key:E 4/4 Arranged By Kermit Tam Capo 4 > Play C |C   G  |Am  Em  (怎)麼去(擁)有 (一)道彩(虹)  |F   C |F     G (怎)麼去(擁)抱 (一)夏天的(風) |...

阿锋zxf
46分钟前
2
0
OSChina 周二乱弹 —— 你醒啦?现在你已经是丧尸了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @小鱼丁 :分享全仁权的单曲《걱정말아요 그대 (你不要担心)》: 《걱정말아요 그대 (你不要担心)》- 全仁权 手机党少年们想听歌,请使劲儿戳(...

小小编辑
48分钟前
1K
13
再一次生产 CPU 高负载排查实践

前言 前几日早上打开邮箱收到一封监控报警邮件:某某 ip 服务器 CPU 负载较高,请研发尽快排查解决,发送时间正好是凌晨。 其实早在去年我也处理过类似的问题,并记录下来:《一次生产 CPU ...

crossoverJie
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部