C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
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定义了连接池内单个连接所拥有的最大缓存tatements数。Default: 0 -->
<property name="maxStatementsPerConnection">0</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>
在Hibernate(spring管理)中的配置:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:Test</value></property>
<property name="user"><value>Kay</value></property>
<property name="password"><value>root</value></property>
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="10" />
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="100" />
<!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="1800" />
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="3" />
<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
<property name="maxStatements">100</property>
<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
<property name="maxStatementsPerConnection"></property>
<property name="initialPoolSize" value="10" />
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="60" />
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts" value="30" />
<property name="breakAfterAcquireFailure" value="true" />
<property name="testConnectionOnCheckout" value="false" />
</bean>
###########################
### C3P0 Connection Pool###
###########################
#hibernate.c3p0.max_size 2
#hibernate.c3p0.min_size 2
#hibernate.c3p0.timeout 5000
#hibernate.c3p0.max_statements 100
#hibernate.c3p0.idle_test_period 3000
#hibernate.c3p0.acquire_increment 2
#hibernate.c3p0.validate false
在hibernate.cfg.xml文件里面加入如下的配置:
<!-- 最大连接数 -->
<property name="hibernate.c3p0.max_size">20</property>
<!-- 最小连接数 -->
<property name="hibernate.c3p0.min_size">5</property>
<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
<property name="hibernate.c3p0.timeout">120</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="hibernate.c3p0.max_statements">100</property>
<!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
<property name="hibernate.c3p0.idle_test_period">120</property>
<!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<!-- 每次都验证连接是否可用 -->
<property name="hibernate.c3p0.validate">true</property>
分享到:
相关推荐
除了资源文件配置外,C3P0也可以通过XML配置文件(如`c3p0-config.xml`)进行设置,这种方式更加灵活,可以针对不同的数据源设定不同的配置。例如: ```xml <class-name>...
综上所述,使用C3P0管理数据库连接的关键在于正确配置`init.properties`文件,以及将其与Spring框架集成,从而实现高效、稳定的数据库连接管理。这不仅能够显著提升应用的性能,还能简化数据库操作的复杂性,是Java ...
在描述中提到的"C3P0-0.9.5.1 jar包",指的是这个版本的C3P0库被打包成了一个Java Archive (JAR) 文件。JAR文件是Java平台中用于打包类库的标准格式,便于分发和运行。c3p0-0.9.5-pre1.jar可能是这个版本的预发布...
在 C3P0 配置中,有多个关键参数用于定制连接池的行为。以下是对这些参数的详细解释: 1. `acquireIncrement`:当连接池中的连接耗尽时,C3P0 会一次尝试获取的连接数。默认值是 3。增加这个值可以更快地扩大连接池...
在描述中提到的三个jar包,c3p0-0.9.1.jar、c3p0-0.9.1.2.jar和c3p0-0.9.1-pre6.jar,都是C3P0的不同版本。通常,你需要的是最新版本,以获取最新的功能和修复的bug。例如,c3p0-0.9.1.2.jar比c3p0-0.9.1.jar更新,...
6. **兼容性**:如描述中提到,该版本C3P0(0.9.2.1)是针对JDBC 5(即JDBC 4.0,对应Java 6)设计的,与MySQL Connector/J 5.1.37配合使用,可以处理多种数据库,如MySQL、Oracle、SQL Server等。 配置C3P0时,...
【描述】中的XML配置片段展示了在Spring框架中配置一个通过JNDI查找的数据源,这正是Tomcat统一配置C3P0连接池的一个关键步骤。`<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">`...
这个描述暗示了我们正在处理一个Java Web应用项目,其中使用了SQLite作为轻量级数据库,C3P0作为数据源连接池,并且集成了Spring和Hibernate来管理和操作数据库。 首先,SQLite是一个开源的、轻量级的关系型数据库...
标题与描述均提到了“c3p0 Hibernate缓存详细配置”,这暗示了文章将深入探讨如何在使用Hibernate框架时,通过c3p0连接池进行优化和性能提升的细节。c3p0是一个开源的数据库连接池实现,广泛应用于Java环境中,能够...
在【描述】中提到的“c3p0 demo jar”可能是一个包含c3p0库以及示例代码的归档文件,用于帮助开发者快速理解和使用c3p0连接池。这些jar包包括: 1. `mchange-commons-java-0.2.2.jar`:这是mchange公司的公共库,...
5. **配置c3p0**: 在使用Hibernate和c3p0时,需要在Hibernate的配置文件(如`hibernate.cfg.xml`)中指定c3p0的相关属性,如最小连接数、最大连接数、获取连接超时时间等,以满足特定应用的需求。 6. **集成步骤**:...
C3P0是一个开源的Java连接池,全称为Comprehensive Connection Pooling Packages,它为Java数据库连接(JDBC)提供了一种高效、功能强大且高度可配置的连接池实现。在Java应用程序中,尤其是在服务器端的Web应用或者...
【描述】:虽然描述为空,但我们可以推断,这个主题可能涵盖了如何在Hibernate配置中集成C3P0连接池,以及使用C3P0进行数据库连接管理的相关技术细节。这通常涉及到配置属性,如最小和最大连接数、超时设置、测试...
这将使你的C3P0配置与主项目保持分离,便于管理和维护。 2. **创建libs文件夹**:在新模块的目录结构中,创建一个名为“libs”的文件夹。这个文件夹将用于存放所有外部依赖的jar包。 3. **复制jar包**:将解压后的...
在标题和描述中提到的"C3P0 jar包,适合ORACLE11G",意味着这个jar包是专门为与Oracle 11g数据库配合使用的。Oracle 11g是一款非常流行的商业关系型数据库管理系统,广泛应用于企业级应用。C3P0与Oracle 11g的结合,...
在你的Java代码或配置文件(如`c3p0.properties`或`application.properties`)中,设置C3P0的属性,如最大连接数(maxPoolSize)、最小连接数(minPoolSize)、初始化连接数(initialPoolSize)等。 3. 初始化C3P0...
在描述中提到了“c3p0原始代码包”,这通常指的是C3P0的源码,对于开发者来说,通过阅读源码可以更深入理解C3P0的工作原理,比如它如何管理连接、检测连接有效性、处理并发等,这对于优化配置或解决特定问题非常有...
描述中提到的"c3p0-0.9.5.2.jar"是C3P0的核心库文件,用于在Java应用程序中实际引入并使用C3P0功能。 C3P0的主要功能和特点包括: 1. 连接池管理:C3P0通过创建一个池来保存数据库连接,而不是每次需要时都创建新...