之前已经讲过dbcp可以用于数据库连接池进行管理。另一种技术c3p0也可以用于数据库连接池管理,其中Spring等框架都是基于c3p0技术进行数据库连接池管理的。

使用之前需要引入 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.11.jar 包,主要的类是ComboPooledDataSource,也有两种方式进行设置。一种是代码中进行设置,一种是在配置文件中设置。主要区别就是这种方式只有一个主要类ComboPooledDataSource。

他们之间可能方法名有所不同,但是功能是一样的。

1)在代码中进行配置,代码如下

ComboPooledDataSource dataSource = new ComboPooledDataSource();

        try {
dataSource.setJdbcUrl("jdbc:mysql:///mydb?useSSL=true");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setUser("root");
dataSource.setPassword("");
dataSource.setMaxIdleTime();
dataSource.setMaxPoolSize();
dataSource.setInitialPoolSize();
Connection conn = dataSource.getConnection(); String sql = "select * from user where id=?";
QueryRunner qr = new QueryRunner();
User user = qr.query(conn, sql, new BeanHandler<User>(User.class), ); System.out.println(user); dataSource.close(); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

2) 在配置文件中进行设置

注意:配置文件命名是 c3p0-config.xml。系统默认回去 CLASSPATH、WEB-INF/classes文件夹中搜索配置文件,所以把他放在 src 目录下即可。

ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql_config");   //使用指定配置名的配置
try {
Connection conn = dataSource.getConnection();
String sql = "select * from user where id=?";
QueryRunner qr = new QueryRunner();
User user = qr.query(conn, sql, new BeanHandler<User>(User.class), ); System.out.println(user); dataSource.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

配置文件中可以进行设置的参数如下:

acquireIncrement
acquireRetryAttempts
acquireRetryDelay
autoCommitOnClose
automaticTestTable
breakAfterAcquireFailure
checkoutTimeout
connectionCustomizerClassName
connectionTesterClassName
contextClassLoaderSource
dataSourceName
debugUnreturnedConnectionStackTraces
driverClass
extensions
factoryClassLocation
forceIgnoreUnresolvedTransactions
forceSynchronousCheckins
forceUseNamedDriverClass
idleConnectionTestPeriod
initialPoolSize
jdbcUrl
maxAdministrativeTaskTime
maxConnectionAge
maxIdleTime
maxIdleTimeExcessConnections
maxPoolSize
maxStatements
maxStatementsPerConnection
minPoolSize
numHelperThreads
overrideDefaultUser
overrideDefaultPassword
password
preferredTestQuery
privilegeSpawnedThreads
propertyCycle
statementCacheNumDeferredCloseThreads
testConnectionOnCheckin
testConnectionOnCheckout
unreturnedConnectionTimeout
user

配置文件样例如下

<c3p0-config>
<default-config>
<property name="checkoutTimeout"></property>
<property name="idleConnectionTestPeriod"></property>
<property name="initialPoolSize"></property>
<property name="maxIdleTime"></property>
<property name="maxPoolSize"></property>
<property name="minPoolSize"></property> <user-overrides user="test-user">
<property name="maxPoolSize"></property>
<property name="minPoolSize"></property>
<property name="maxStatements"></property>
</user-overrides> </default-config>
<named-config name="mysql_config">
<property name="initialPoolSize"></property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb?useSSL=true</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="maxPoolSize"></property>
<property name="initialPoolSize"></property>
<property name="maxIdleTime"></property>
<property name="password"></property>
<property name="user">root</property> </named-config> </c3p0-config>

c3p0数据库连接池管理的更多相关文章

  1. 【Java EE 学习 16 上】【dbcp数据库连接池】【c3p0数据库连接池】

    一.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: package day16.utils; import java.io.IOException; import java.lang.ref ...

  2. C3P0数据库连接池使用方法

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...

  3. paip.c3p0 数据库连接池 NullPointerException 的解决...

    paip.c3p0 数据库连接池 NullPointerException 的解决... 程序ide里面运行正常..外面bat运行错误.. 作者Attilax  艾龙,  EMAIL:14665198 ...

  4. paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out

    paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out 作者Attilax ...

  5. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. c3p0数据库连接池(作用不重复)

    /* * c3p0数据库连接池: * 只被初始化一次 * connection对象进行close时,不是正的关闭,而是将该数据连接归还给数据库连接池 * * */ 四个架包 mysql-connect ...

  7. springboot 使用c3p0数据库连接池

    springboot 使用c3p0数据库连接池的方法  本文转自:http://www.cnblogs.com/xiaosiyuan/p/6255292.html 使用springboot开发时,默认 ...

  8. c3p0 数据库连接池相关知识

    c3p0数据库连接池的配置文件放在eclipse的src目录下,代码就可以识别. c3p0的配置文件的内容如下: <!-- Uncomment and set any of the option ...

  9. c3p0数据库连接池无法连接数据库—错误使用了username关键字

    一.问题描述 上篇博客说到了关于maven无法下载依赖jar包的问题,这篇博客再说一下关于在本个项目中遇到的关于使用C3P0连接池连接数据库的问题,真心很奇葩,在此,也请大家引起注意.首先看我的项目基 ...

随机推荐

  1. Entity Framework 6 vs NHibernate 4

    This article is dedicated to discussing the latest releases of the NHibernate and Entity Framework. ...

  2. u-boot懂你并不难

    转载:http://blog.chinaunix.net/uid-28236237-id-3865045.html u-boot第一阶段分析(一) u-boot 第一阶段分析(二) u-boot 第二 ...

  3. .jar包文件的生成与运行

    首先你得线配置好你的JRE,否则下面的都不会有作用,还没有配置的,请百度上搜索一下如何配置.这里我就不多讲了. jar包是一个可执行的文件包,简单说jar包就是一个外包.Java 程序是由若干个 .c ...

  4. Ext树形结构

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. Mac通过wifi连接 Android设备

    公司用的全是mac开发,但是全是type-C接口,每次背电脑回家啊,还得带个数据线转换器…… 想着回来,直接通过Wi-Fi连接手机就好,发现完全忘了之前套路,现在赶紧记下一波,保证包教包会! STEP ...

  6. 数据库 DB MySQL 基本操作 CRUD 多表 MD

    操作数据库 创建数据库:create 创建一个名称为mydb1的数据库 create database mydb1; 创建一个使用gbk字符集的mydb2数据库 create database myd ...

  7. Java import javax.servlet 出错

    Error: The import javax.servlet cannot be resolved The import javax.servlet.http.HttpServletRequest ...

  8. 谷歌浏览器开发调试工具中Sources面板 js调试等 完全介绍

    这次分享的是Chrome开发工具中最有用的面板Sources. Sources面板几乎是我最常用到的Chrome功能面板,也是在我看来决解一般问题的主要功能面板.通常只要是开发遇到了js报错或者其他代 ...

  9. 根据WSDL文件生成代理类

    D:\Program Files\Microsoft Visual Studio 10.0\VC>wsdl  /l:c#  /n:cmsserver  /out:E:\ospsoft\Trave ...

  10. 转:如何转换Android打包用jks格式keystore证书为Air用pkcs12格式p12证书

    转自:http://blog.k-res.net/archives/1539.html 如何转换Android打包用jks格式keystore证书为Air用pkcs12格式p12证书 六月 11, 2 ...