c3po连接池参数

合集下载

c3p0 连接池 sql 参数

c3p0 连接池 sql 参数

c3p0 是一个开源的JDBC 连接池库,用于提高数据库连接的性能和可靠性。

在使用c3p0 连接池时,可以通过在配置文件中设置SQL 参数来优化连接池的行为。

以下是一些常用的c3p0 连接池SQL 参数:testConnectionOnCheckin:设置为true 时,每次连接返回到连接池时都会执行一个测试查询来验证连接的有效性。

这有助于检测并排除不活跃或无效的连接。

testConnectionOnCheckout:设置为true 时,每次从连接池中获取连接时都会执行一个测试查询来验证连接的有效性。

这确保了从连接池中获取的连接都是可用的。

preferredTestQuery:用于指定测试查询的SQL 语句。

该查询应该是一个简单的、执行时间短的查询,用于验证连接是否正常工作。

例如,对于MySQL 数据库,可以使用"SELECT 1" 作为测试查询。

maxIdleTime:指定连接在返回到连接池后的最大空闲时间(以秒为单位)。

超过此时间的连接将被关闭并从连接池中移除。

这有助于释放资源并防止过多的空闲连接占用数据库资源。

maxConnectionAge:指定连接的最大生存时间(以秒为单位)。

超过此时间的连接将被关闭并从连接池中移除,无论它们是否处于空闲状态。

这有助于确保连接的稳定性和性能。

minPoolSize 和maxPoolSize:分别指定连接池中的最小和最大连接数。

这些参数用于控制连接池的大小,以平衡资源使用和性能需求。

这些参数可以通过c3p0 的配置文件进行设置,例如c3p0-config.xml 或c3p0.properties 文件。

具体的配置方式可能会因使用的编程语言和框架而有所不同,因此建议查阅c3p0 的官方文档或相关教程以获取更详细的指导。

C3P0详解

C3P0详解

C3P0详解定义:C3P0是⼀个开源的JDBC连接池,⽬前使⽤它的开源项⽬有Hibernate,Spring等。

数据库连接池的基本思想就是为数据库连接建⽴⼀个“缓冲池”。

预先在缓冲池中放⼊⼀定数量的连接,当需要建⽴数据库连接时,只需从“缓冲池”中取出⼀个,使⽤完毕之后再放回去。

我们可以通过设定连接池最⼤连接数来防⽌系统⽆尽的与数据库连接。

获取⼀个连接,系统要在背后做很多消耗资源的事情,⼤多时候,创建连接的时间⽐执⾏sql语句的时间还要长。

⽤户每次请求都需要向数据库获得链接,⽽数据库创建连接通常需要消耗相对较⼤的资源,创建时间也较长。

使⽤⽅法:1.导⼊jar包:c3p0和mysql2.配置xml⽂件c3p0通过set⽅法进⾏配置c3p0通过c3p0-config.xml⽂件进⾏配置关于通过配置⽂件进⾏配置的话,这边需要把xml⽂件⽅法同src⽂件夹下,c3p0会扫描⽂件进⾏相关的配置。

在Maven依赖中要加⼊c3p0和mysql-connector-java依赖,版本号⼀定要写。

废话不多说,下⾯是c3p0-config.xml⽂件的代码是不是代码简洁了很多,所以在我们通常使⽤配置⽂件来创建数据库的连接池。

c3p0常⽤配置参数介绍在前⾯的c3p0的相关配置中,我们看到了c3p0的配置参数,这⾥我们介绍⼏个常⽤的c3p0的配置参数最基础的参数配置:driverClass : 数据库驱动(⽐如mysql,或者oracle数据库的驱动)jdbcUrl: jdbc数据库连接地址(例如jdbc:mysql://localhost:3306/zhanghanlun)user:数据库⽤户名password:和数据库⽤户名对应的数据库密码基础的参数配置在这⼏个参数中,idleConnectionTestPeriod、testConnectionOnCheckout和testConnectuonOnCheckin控制什么时候连接将被校验检测。

c3p0 连接池配置.pptx

c3p0 连接池配置.pptx

c3p0






Default:
name="overrideDefaultUser">root</property>
null--><property
<!-- 与 overrideDefaultUser 参 数 对 应 使 用 的 一 个 参 数 。 Default: null--><property name="overrideDefaultPassword">password</property>
Default: null--><property name="factoryClassLocation">null</property>
<!--Strongly disrecommended. Setting this to true may lead to subtle and bizarre bugs.
使用。Default: null--><property name="automaticTestTable">Test</property>
<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用 getConnection()的时候继续尝试获取连接。如果设为 true,那么在尝试
<property name="acquireRetryAttempts">30</property>
<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->

连接池技术c3po

连接池技术c3po

连接池技术c3po连接池主要功能,输出连接数据库的连接。

内部可以控制存贮多少个连接// c3p0两种配置⽅式,1代码内嵌式,2是配置⽂件读取// 1:默认去classpath路径下找c3p0-config.xml⽂件加载进来ComboPooledDataSource cpds = new ComboPooledDataSource();// 2:得到数据库连接Connection conn = cpds.getConnection();//以上是c3p0能做的事情Statement st = conn.createStatement();int sum = st.executeUpdate("insert user (username)values('1s');");System.out.println(sum);/**外部c3p0-config.xml⽂件* <c3p0-config><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstore</property><property name="user">root</property><property name="password">root</property></default-config></c3p0-config>// 1:默认去classpath路径下找c3p0-config.xml⽂件加载进来,不能有这个配置⽂件不然代码内置的就不起作⽤。

c3p0使用详解数据库连接池 单例模式

c3p0使用详解数据库连接池 单例模式

//数据库连接池单例模式import java.sql.Connection;import java.sql.SQLException;import boPooledDataSource;import com.mchange.v2.c3p0.DataSources;public final class ConnectionManager {private static ConnectionManager instance;private ComboPooledDataSource ds;private ConnectionManager() throws Exception {ds = new ComboPooledDataSource();ds.setDriverClass("oracle.jdbc.driver.OracleDriver");ds.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");ds.setUser("test");ds.setPassword("testtest");//初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。

Default: 3 initialPoolSizeds.setInitialPoolSize(3);//连接池中保留的最大连接数。

Default: 15 maxPoolSizeds.setMaxPoolSize(10);//// 连接池中保留的最小连接数。

//ds.setMinPoolSize(1);//当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。

Default: 3 acquireIncrementds.setAcquireIncrement(1);//每60秒检查所有连接池中的空闲连接。

c3p0连接池默认参数

c3p0连接池默认参数

c3p0连接池默认参数
C3P0是一个开源的JDBC连接池,它提供了高效、可扩展和可靠的数据库
连接管理。

以下是C3P0连接池的一些默认参数:
1. 最大连接数(maxPoolSize):默认值为15。

2. 最小连接数(minPoolSize):默认值为3。

3. 初始化连接数(initialPoolSize):默认值为3。

4. 最大空闲时间(maxIdleTime):默认值为0,表示永不丢弃空闲连接。

5. 获取连接超时时间(checkoutTimeout):默认值为0,表示无限期等
待获取新连接。

6. 一次同时获取的连接数(acquireIncrement):默认值为3。

7. 获取新连接失败后重复尝试的次数(acquireRetryAttempts):默认值
为30。

8. 数据库驱动类名(driverClass):需要根据具体的数据库和驱动来确定。

9. JDBC连接URL(jdbcUrl):需要根据具体的数据库和连接信息来确定。

10. 用户名和密码(user和password):需要根据具体的数据库和用户信息来确定。

这些参数可以在C3P0的配置文件中进行修改,以满足实际应用的需求。

Spring_c3p0 配置详解

Spring_c3p0 配置详解

<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
配置一个数据源
Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。
DBCP数据源
DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta- commons/commons-pool.jar。下面是使用DBCP配置MySql数据源的配置片断:
<property name="maxIdleTime">
<value>60</value>
</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">
<value>root</value>
</property>
<property name="password">

详解C3P0(数据库连接池)

详解C3P0(数据库连接池)
当然,除了以上这几种常用的参数设置以外,这里还有一份有关c3p0-config.xml参数的详细清单,如有需要可自行增加。
4.c3p0-config.xml参 数 清 单
<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 -->
<!--每60秒检查所有连接池中的空闲连接。Default: 0 --> <property name="idleConnectionTestPeriod">60</property>
<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize">3</property>

c3p0数据库连接池 原理

c3p0数据库连接池 原理

c3p0数据库连接池原理C3P0数据库连接池原理什么是数据库连接池•数据库连接池是一种用于管理数据库连接的技术。

•它通过提前创建一定数量的数据库连接,以备随时供应给应用程序使用,从而减少了数据库连接的创建和销毁的开销。

常见的Java数据库连接池•C3P0•DBCP•HikariCPC3P0数据库连接池原理连接池配置•配置最小连接数:指定连接池中的最小连接数,连接数不会低于此数值。

•配置最大连接数:指定连接池中的最大连接数,连接数不会超过此数值。

•配置初始连接数:指定连接池初始创建的连接数。

•配置最大空闲时间:指定连接的最大空闲时间,超过这个时间未使用的连接会被释放。

•配置最大生命周期:指定连接的最大生命周期,超过这个时间的连接会被释放并重新创建。

•配置重试次数:指定连接获取失败时的重试次数。

连接池运行原理1.初始化连接池:根据配置的初始连接数,创建一定数量的连接,并放入连接池中。

2.获取连接:应用程序通过请求连接池获取数据库连接。

如果连接池中有空闲的连接,则直接分配给应用程序;如果没有空闲连接,并且连接数未达到最大连接数,则创建新的连接并分配给应用程序。

3.使用连接:应用程序使用获取到的数据库连接进行数据库操作。

4.释放连接:应用程序在使用完数据库连接后,将连接返还给连接池。

连接池会将连接标记为空闲状态,以备其他应用程序使用。

5.连接回收:连接池会定时检查当前连接池中的连接,如果发现某些连接超过了最大空闲时间或最大生命周期,就会将这些连接进行释放。

6.连接重试:如果连接的获取失败,连接池会进行一定次数的重试操作,直到成功获取连接或达到重试次数。

连接池的优势•提高系统性能:连接池预先创建并维护了一定数量的数据库连接,避免了频繁创建和销毁连接的开销,有效提高了系统性能。

•资源的合理利用:连接池能够动态调整连接的使用情况,根据应用程序的需求提供合适的连接数,避免了过多的空闲连接占用资源。

•连接的重用:连接池通过重用连接,减少了连接创建的时间消耗,提高了数据库操作的效率。

c3p0参数解释

c3p0参数解释

c3p0参数解释#最常用配置#initialPoolSize:连接池初始化时创建的连接数,default : 3,取值应在minPoolSize与maxPoolSize之间c3p0.initialPoolSize=10#minPoolSize:连接池保持的最小连接数,default : 3c3p0.minPoolSize=10#maxPoolSize:连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15c3p0.maxPoolSize=50#acquireIncrement:连接池在无空闲连接可用时一次性创建的新数据库连接数,default : 3c3p0.acquireIncrement=5#管理连接池的大小和连接的生存时间#maxIdleTime:连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。

如果为0,则永远不会断开连接,即回收此连接。

default : 0 单位sc3p0.maxIdleTime=600#idleConnectionTestPeriod:每900秒检查所有连接池中的空闲连接c3p0.idleConnectionTestPeriod=900#配置PreparedStatement缓存#连接池为数据源缓存的PreparedStatement的总数。

由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement#来计算。

同时maxStatementsPerConnection的配置无效。

default : 0(不建议使用)c3p0.maxStatements=500#连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,#如果设置的好,肯定是可以提高性能的。

c3p0数据库连接池默认值

c3p0数据库连接池默认值

c3p0数据库连接池默认值在数据库连接池中,C3P0是一个流行的开源项目,用于管理数据库连接。

它提供了一种高效且可靠的方式来管理和复用数据库连接。

C3P0的默认配置参数对于初次使用连接池的用户来说非常有用,但有时候用户可能需要根据自己的需求进行修改。

1. 数据库驱动:C3P0在默认情况下使用JDBC驱动来连接数据库。

对于不同的数据库,需要使用相应的JDBC驱动。

例如,对于MySQL数据库,C3P0默认使用的是MySQL Connector/J 驱动。

2. 数据库URL:C3P0需要知道如何连接到目标数据库。

在默认情况下,它会使用类似以下格式的URL:jdbc:mysql://localhost:3306/mydatabase。

其中,jdbc:mysql指定了使用MySQL 数据库,localhost是数据库服务器地址,3306是数据库端口号,mydatabase是要连接的数据库名称。

3. 用户名和密码:为了连接到数据库,C3P0需要知道使用的用户名和密码。

在默认情况下,这些凭据是空的,但在实际应用中,通常需要提供有效的用户名和密码才能成功连接到数据库。

4. 最大连接数:C3P0允许用户设置最大连接数,以防止数据库因过多的连接而崩溃。

默认情况下,最大连接数是10。

5. 最小连接数:C3P0会保持一定数量的活动连接,以减少获取连接时的延迟。

默认情况下,最小连接数是0。

6. 连接超时时间:如果C3P0在指定的超时时间内无法建立到数据库的连接,它将抛出异常。

默认的超时时间是5秒(5000毫秒)。

7. 测试查询:在获取连接之前,C3P0可能会执行一个测试查询来验证连接是否有效。

对于MySQL数据库,默认的测试查询是"SELECT 1"。

这些默认值只是C3P0的一些常用配置参数。

在实际使用中,根据应用的需求和数据库的性能,可能需要进行调整。

c3p0数据库连接池的使用详解

c3p0数据库连接池的使用详解

c3p0数据库连接池的使⽤详解⾸先,什么是c3p0?下⾯是百度百科的解释:C3P0是⼀个开源的JDBC连接池,它实现了数据源和JNDI绑定,⽀持JDBC3规范和JDBC2的标准扩展。

⽬前使⽤它的开源项⽬有Hibernate,Spring 使⽤连接池和我们平时写的JDBC代码相⽐较有什么优点呢?资源重⽤:由于数据库连接得以重⽤,避免了频繁创建,释放连接引起的⼤量性能开销。

在减少系统消耗的基础上,另⼀⽅⾯也增加了系统运⾏环境的平稳性。

更快的系统反应速度:数据库连接池在初始化过程中,往往已经创建了若⼲数据库连接置于连接池中备⽤。

此时连接的初始化⼯作均已完成。

对于业务请求处理⽽⾔,直接利⽤现有可⽤连接,避免了数据库连接初始化和释放过程的时间开销,从⽽减少了系统的响应时间。

新的资源分配⼿段:对于多应⽤共享同⼀数据库的系统⽽⾔,可在应⽤层通过数据库连接池的配置,实现某⼀应⽤最⼤可⽤数据库连接数的限制,避免某⼀应⽤独占所有的数据库资源。

统⼀的连接管理,避免数据库连接泄露:在较为完善的数据库连接池实现中,可根据预先的占⽤超时设定,强制回收被占⽤连接,从⽽避免了常规数据库连接操作中可能出现的资源泄露。

如何在⾃⼰的项⽬中使⽤c3p0呢?1. 导jar包:2. 两种⽅式可以建⽴c3p0连接,第⼀种⽅式是代码⽅式,Demo如下:package com.wang.utils;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import boPooledDataSource;public class JDBCutils {private static Connection conn;private static ComboPooledDataSource ds = new ComboPooledDataSource();public static Connection getConnection() {try {ds.setDriverClass("com.mysql.jdbc.Driver");ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=2 56&rewriteBatchedStatements=true");ds.setUser("root");ds.setPassword("123");conn = ds.getConnection();} catch (SQLException e) {e.printStackTrace();} catch (PropertyVetoException e) {e.printStackTrace();}return conn;}第⼆种是使⽤读取配置⽂件的⽅式,要求是,配置⽂件必须命名为c3p0-config.xml,并且放在src⽬录下,配置⽂件如下:<?xml version="1.0" encoding="UTF-8" ?><c3p0-config><default-config><property name="jdbcUrl"><![CDATA[jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=2 56&rewriteBatchedStatements=true]]></property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="user">root</property><property name="password">123</property> <!--当连接池中的连接耗尽的时候c3p0⼀次同时获取的连接数。

C3P0数据连接池_V0.9.5_pre8

C3P0数据连接池_V0.9.5_pre8
实例化并配置 ComboPooledDataSource.................................................................2 使用数据源工厂类............................................................................................................ 3 查询池数据源的当前状态................................................................................................ 3 清理 c3p0 PooledDataSources.............................................................................. 4 创建个人的 PoolBackedDataSource....................................................................... 5 原生连接(Raw Connection)和 Statement 操作...............................................5 属性配置.............................................................................................................................................6 连接池基本配置........................................................................................................................ 7 容量和连接寿命配置................................................................................................................ 7 连接测试配置.............................................................................................................................8 Statement 池配置..................................................................................................................9 数据库故障修复配置.............................................................................................................. 10 使用链接定制器管理连接生命周期......................................................................................10 未结束事务处理方式配置...................................................................................................... 12 调试和解决问题客户端应用配置..........................................................................................12 避免客户热重部署中的内存泄露配置..................................................................................13 其他数据源配置...................................................................................................................... 13 通过 JMX 配置和管理 c3p0 配置......................................................................................... 14 日志配置.................................................................................................................................. 14 命名配置.................................................................................................................................. 16 各用户(Per-user)配置...................................................................................................17 用户配置扩展.......................................................................................................................... 18 混合命名的、各用户的、用户定义的配置扩展..................................................................19

C3P0连接池配置

C3P0连接池配置
<html>
<head>
<title>My JSP 'mysqlTest.jsp' starting page</title>
</head>
<body>
Mysql数据库测试<br><br><br>
<%
Connection conn=null;
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
参数说明:
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
<description>DB Connection</description>
<res-ref-name>jdbc/connPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
2、在tomcat\conf\context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>

MySQL数据库服务器下C3P0连接池的配置

MySQL数据库服务器下C3P0连接池的配置


存在的问题
笔者在开发项 目时遇 到这样 的情况 : o c t . T m aJ 务 J  ̄
器 与M S L y Q 数据库 之 间使 用第三方 C P 连接池 , 3O 项
目的应 用程序 部署好后 , 每过一段 时间 ( 比如一 个晚 上) 应用程 序没有被调用 , 然后一旦 程序访 问My Q S L
jb .r e” > d cD i r / v
< rp r a = jb U l au = jb : s l/ p o et n me ”d c r y ”v le ” c d myq: /
lc l o t 3 /h a u e io e tu &a ;h r ceEn o o ah s: 06g d ? s Un c d = r e mpc a a tr c 3 d“ = ig UTF ”, _8 >
< r pe t a =” c u r I c e n ”v l e 2 / p o ry n me a q ie n r me t a u =” ”>
< 连接池最大数 一 > ! 一 -
< r p ry n me ma P o S z ”v l e 2 ” > p o e t a =” x o l ie a u =” 0 ,
栏:E,- 目 目粱一 件服 务 ■ 编春 软 ● ,一 辑丽 ■ J ■ ^I ‘ T , ■■ 三
… … …
/ t 6 n 一 a : g i 5 5@ ' 3 Cor m ii l i 0 r an z
My QL S 数据库腋务器下C 连接池的配置 3O P
■ 中国人 民银 行松 原市 中心支行 于广 和
<p o e t a = u e ”v l e r o ”/ r p ry n me ” s r a u =” o t >

C3P0连接池的使用

C3P0连接池的使用

C3P0连接池的使⽤C3P0是⼀个开源的JDBC连接池,它实现了数据源和JNDI绑定,⽀持JDBC3规范和JDBC2的标准扩展,设计⾮常简单易⽤C3P0的基本使⽤添加maven依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version></dependency><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5</version></dependency>编写C3P0⼯具类public class C3P0Utils {private static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");public static DataSource getDataSource() {return dataSource;}public static Connection getConnection() {try {return dataSource.getConnection();} catch (SQLException e) {throw new RuntimeException(e);}}//释放连接回连接池public static void close(Connection conn, PreparedStatement pst, ResultSet rs) {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (pst != null) {try {pst.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}classpath下⾯配置⽂件c3p0-config.xml<?xml version="1.0" encoding="UTF-8"?><c3p0-config><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://192.168.47.151:3306/web</property><property name="user">root</property><property name="password">root</property><property name="initialPoolSize">5</property><property name="maxPoolSize">20</property></default-config><named-config name="mysql"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://192.168.47.151:3306/web</property><property name="user">root</property><property name="password">root</property></named-config></c3p0-config>测试代码@Testpublic void test1(){Connection conn = null;PreparedStatement pstmt = null;// 1.创建⾃定义连接池对象DataSource dataSource = new DataSourcePool();try {// 2.从池⼦中获取连接conn = C3P0Utils.getConnection();String sql = "insert into USER values(?,?)";//3.必须在⾃定义的connection类中重写prepareStatement(sql)⽅法pstmt = conn.prepareStatement(sql);pstmt.setString(1, "李四");pstmt.setString(2, "1234");int rows = pstmt.executeUpdate();System.out.println("rows:"+rows);} catch (Exception e) {throw new RuntimeException(e);} finally {C3P0Utils.close(conn,pstmt,null);}}C3P0的其他细化配置<!--acquireIncrement:链接⽤完了⾃动增量3个。

c3p0-简介

c3p0-简介

c3p0连接池(ThreadLocal保证connection线程安全)C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

下载c3p0的jar,并添加log4j.jar先便给大减提供一个参c3p0数据库连接池的小例子借此介绍一下参数配置:package com.wb.db;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import boPooledDataSource;/*** 采用ThreadLocal线程局部变量保证线程安全* @author hemes1314*/public class C3p0Pool {public static ThreadLocal connectionHolder = new ThreadLocal();private static DataSource dataSource;public C3p0Pool(){}public static Connection getConnection() {Connection conn = (Connection) connectionHolder.get();//如果在当前线程中没有绑定相应的Connectionif(conn==null){if (dataSource == null) {initDataSource();}try {conn = dataSource.getConnection();//将Connection设置到ThreadLocal线程变量中connectionHolder.set(conn);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return conn;}public static void closeConnection(){Connection conn = (Connection) connectionHolder.get(); if(conn!=null){try {conn.close();//从ThreadLocal中清除Connection connectionHolder.remove();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void initDataSource(){String driverClassName=null;String url=null;String username=null;String password=null;int initialPoolSize=3;int maxPoolSize=15;int minPoolSize=5;int acquireRetryDelay=1000;int maxIdleTime=60;Configuration config=new Configuration("oraConn.properties");driverClassName = config.getValue("driver");url = config.getValue("url");username = config.getValue("user");password = config.getValue("password");initialPoolSize = Integer.parseInt(config.getValue("initialPoolSize").trim());maxPoolSize = Integer.parseInt(config.getValue("maxPoolSize").trim());minPoolSize = Integer.parseInt(config.getValue("minPoolSize").trim());maxIdleTime = Integer.parseInt(config.getValue("maxIdleTime").trim());ComboPooledDataSource cpds = new ComboPooledDataSource();try {cpds.setDriverClass(driverClassName);} catch (PropertyVetoException e) {// TODO Auto-generated catch blocke.printStackTrace();}cpds.setUser(username);cpds.setPassword(password);cpds.setJdbcUrl(url);//初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。

Hibernate数据库连接池C3P0配置详解

Hibernate数据库连接池C3P0配置详解

1 数据库连接池描述数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。

对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。

数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

这项技术能明显提高对数据库操作的性能。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。

无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。

连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:●最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;●最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

●如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。

不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

2 hibernate中的数据库连接池Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。

在配置连接池时需要注意的有三点:●Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在缺陷。

c3po连接池参数

c3po连接池参数

c3po连接池参数C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源进行各种有效的控制:acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目;acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30;acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000;autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚。

默认为false;automaticTestTable:C3P0将建一张名为Test的空表,并使用其自带的查询语句进行测试。

如果定义了这个参数,那么属性preferredTestQuery将被忽略。

你不能在这张Test表上进行任何操作,它将中为C3P0测试所用,默认为null;breakAfterAcquireFailure:获取连接失败将会引起所有等待获取连接的线程抛出异常。

但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。

如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。

默认为false;checkoutTimeout:当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。

单位毫秒,默认为0;connectionT esterClassName:通过实现ConnectionT ester或QueryConnectionT ester的类来测试连接,类名需设置为全限定名。

默认为 com.mchange.v2.C3P0.impl.DefaultConnectionT ester;idleConnectionTestPeriod:隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查;initialPoolSize:初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
initialPoolSize:初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3;
maxIdleTime:最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0;
maxPoolSize:连接池中保留的最大连接数。默认为15;
maxStatements:JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0,则缓存被关闭。默认为0;
等方法来提升连接测试的性能。默认为false;
testConnectionOnCheckin:如果设为true那么在取得连接的同时将校验连接的有效性。默认为false。
常用设置:
c3p0.acquireIncrement=3
c3p0.initialPoolSize=3
c3p0.idleConnectionTestPeriod=900
connectionTesterClassName: 通过实现ConnectionTester或QueryConnectionTester的类来测试连接,类名需设置为全限定名。默认为 com.mchange.v2.C3P0.impl.DefaultConnectionTester;
idleConnectionTestPeriod:隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查;
acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000;
autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚。默认为false;
automaticTestTable: C3P0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数,那么属性preferredTestQuery将被忽略。你 不能在这张Test表上进行任何操作,它将中为C3P0测试所用,默认为null;
C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源进行各种有效的控制:
acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目;
acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30;
maxStatementsPerConnection:连接池内单个连接所拥有的最大缓存Statement数。默认为0;
numHelperThreads:C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行。默认为3;
preferredTestQuery:定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个参数能显著提高测试速度。测试的表必须在初始数据源的时候就存在。默认为null;
breakAfterAcquireFailure:获取连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调 用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认为 false;
checkoutTimeout:当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒,默认为0;
propertyCycle: 用户修改系统配置参数执行前最多等待的秒数。默认为300;
testConnectionOnCheckout:因
性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都 将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
c3p0.minPoolSize=2
c3p0.maxPoolSize=50
atements=100
c3p0.numHelperThreads=10
c3p0.maxIdleTime=600
相关文档
最新文档