C3P0连接池只需要一个jar包:

其中我们可以看到有三个jar包;

属于C3P0的jar包只有一个,另外两个是测试时使用的JDBC驱动:一个是mysql的,一个是oracle的;

可以看到在src下我们有一个xml文件,在C3P0中我们可以通过xml配置参数,同样也可以像DBCP中使用properties文件,但是properties文件中只能写一个数据库连接,xml配置就更为灵活了,可以写多个连接(可选的)后面有案例。

普通连接:

package c3p0;

import java.sql.Connection;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
* 使用C3P0连接池
* @author mzy
*
* 每一个连接池可以配置的参数是很多的;
* 但是我们举例使用的都是一些简单的配置,
* 我们配置的越多,使用起来就越灵活!
*/
public class Demo01 {
private static String url="jdbc:mysql://localhost:3306/test";
private static String user="root";
private static String password="123456";
private static String driverClass="com.mysql.jdbc.Driver"; public static void main(String[] args) throws Exception {
// 1) 创建连接池对象
ComboPooledDataSource cds = new ComboPooledDataSource(); // 2) 设置连接参数
cds.setJdbcUrl(url);
cds.setUser(user);
cds.setPassword(password);
cds.setDriverClass(driverClass); // 3) 设置连接池相关的参数
cds.setInitialPoolSize(5); // 初始化连接数
cds.setMaxPoolSize(10); // 最大连接数
cds.setCheckoutTimeout(3000); // 最大等待时间
cds.setMinPoolSize(3); // 设置最小连接数
/*
* 最小连接数适用的场景;
* 在高峰期之后,连接池中的连接数从初始化的5个
* 变成了最大连接数的10个;
* 但是当低峰期到来的时候,根本使用不到那么多连接;
* 这个时候就需要最小连接数来控制最少的连接数了。
*/
// 4) 获取连接
for(int i=1; i<=11; i++) {
Connection conn = cds.getConnection();
System.out.println(conn); // 代理的connection
// 红色的是C3P0软件的日志信息! // 关闭第3个
if(i == 3) {
conn.close(); // 因为这些连接池
}
}
}
}

使用加载配置文件(c3p0-config.xml:名字是固定的,不可更改)

c3p0-config.xml:中的内容

<c3p0-config>
<!-- 默认配置 -->
<default-config>
<!-- 连接参数 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="driverClass">com.mysql.jdbc.Driver</property> <!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">12</property>
<property name="checkoutTimeout">5000</property>
<property name="minPoolSize">3</property> </default-config> <!-- 命名配置 -->
<named-config name="oracle">
<!-- 连接参数 -->
<property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="user">mzy</property>
<property name="password">123456</property>
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property> <!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">12</property>
<property name="checkoutTimeout">5000</property>
<property name="minPoolSize">3</property>
</named-config> </c3p0-config>

使用了配置文件之后,使用c3p0连接池,当你设置连接参数的时候,它会自动去配置文件中读取,不需要有额外操作!

使用读取配置文件的方式进行初始化连接池:

package c3p0;

import java.sql.Connection;
import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; /**
* 同样适用配置文件的方式;
* 不用硬编码
*
* 这里也可以使用properties的形式;但是properties不如xml灵活!
* 比如如果我们要有多个数据库可选(不同的数据库产品)
* 使用properties的话,我们必须一个数据库一个properties;
* 不够灵活,所以在C3P0中我们建议使用xml的方式!
*
* @author mzy
*
*/
public class Demo02 {
/**
* 使用xml配置文件,需要注意:
* 1) 需要把一个名为c3p0-config.xml文件放到src目录下,c3p0会自动读取。
* <c3p0的读取机制:
* 1.在普通java项目下,是在bin目录下找
* 2.在web项目下,是在WEB-INF/classes/下找
* 但是因为在普通java项目下,bin目录是原封不动的拷贝src中的(除.java文件编译成.class文件)
* 在web项目下,所有src中的文件也同上拷贝进WEB-INF/classes中
* 所以我们只用把 c3p0-config.xml直接拷贝到src下就可以了!
* >
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
/**
* 1) new ComboPooledDataSource():
* 使用这种没有参数的构造方法,读取的是default-config的配置信息。
*
* 2) new ComboPooledDataSource("name"):
* 使用有参的构造方法,读取的是name-config配置信息。
*/
// 1) 创建连接池对象
// ComboPooledDataSource cds = new ComboPooledDataSource();
ComboPooledDataSource cds = new ComboPooledDataSource("oracle"); //2) 获取连接
for(int i=1;i<=13;i++){
Connection conn = cds.getConnection();
System.out.println(conn); //关闭第3个
if(i==3){
conn.close();//本质是把连接对象放回连接池中
}
} }
}

初始C3P0连接池的更多相关文章

  1. C3P0连接池详解及配置

    C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...

  2. C3P0连接池详细配置

    C3P0连接池详细配置 转自http://msq.javaeye.com/blog/60387 <c3p0-config> <default-config> <!--当连 ...

  3. Hibernate的配置中,c3p0连接池相关配置

    一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...

  4. C3P0连接池使用教程

     转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6405861.html  在项目中的应用见: https://github.com/ygj0930/Coupl ...

  5. Hibernate配置C3P0连接池

    引入C3PO包 在hibernate.cfg.xml文件中配置 <!-- 数据库连接池的使用 --> <!-- 选择使用C3P0连接池 --> <property nam ...

  6. C3P0连接池一些基本配置

    C3P0连接池配置 数据库连接是一个耗费大量资源且相当慢的操作,所以为了提高性能和连接速度,诞生了连接池这样的概念. 在多用户并发操作过程中,连接池尤为重要. 它是将那些已连接的数据库连接存放在一个容 ...

  7. Java开发笔记(一百五十)C3P0连接池的用法

    JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意.问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要 ...

  8. c3p0连接池]

    <c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...

  9. c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?

    问题描述: jfinal做的api系统中,在正常调用接口一段时间后,突然再调用接口的时候,该请求无响应api系统后台也无错误信息 (就是刚开始接口调用是正常的,突然就无响应了) 于是啊,就开始找错误. ...

随机推荐

  1. Day1 Markdown学习!

    Markdown学习 标题 一级标题:# (空格)+内容 二级标题:##(空格)+内容 同理可支持到六级标题 字体 Hello,World! 两边两个** 加粗 Hello,World! 两边一个* ...

  2. 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...

  3. 汉诺塔Python

    刚开始看python实现汉诺塔,自己想了很久才想明白,在这里记录一下,希望以后忘记能够立马记起. n=1时,可以直接a->c n=2时,可以借助b然后将a->c n=3时,可以将最上面的那 ...

  4. React中组件之间通信的方式

    一.是什么 我们将组件间通信可以拆分为两个词: 组件 通信 回顾Vue系列的文章,组件是vue中最强大的功能之一,同样组件化是React的核心思想 相比vue,React的组件更加灵活和多样,按照不同 ...

  5. rJava在ubuntu上的安装

    1.Oracle JDK 8(必须装oracle的,open的不行) http://www.cnblogs.com/loca/p/4679110.html Install Oracle JDK 8 o ...

  6. PostgreSQL-WITH AS短语

    WITH提供了一种方式来书写在一个大型查询中使用的辅助语句.这些语句通常被称为公共表表达式或CTE,它们可以被看成是定义只在一个查询中存在的临时表.在WITH子句中的每一个辅助语句可以是一个SELEC ...

  7. python批量修改图片名称

    import os class BatchRename(): def rename(self): # windows环境 """ os.rename() 方法用于命名文件 ...

  8. airtest前期准备(pocoSDK+unity打apk包+安装pocoui库)

    只介绍unity的环境准备,cocos的可以参考官方文档    https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integrat ...

  9. xss常见方式

    1.<script>alert(1)</script> 2.源码第一个,[<]被转义,因此在第二个里 "><script>alert(1)&l ...

  10. 关于 pip 的 15 个使用小技巧

    认识pip 众所周知,pip可以对python的第三方库进行安装.更新.卸载等操作,十分方便. pip的全称:package installer for python,也就是Python包管理工具. ...