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. 【Mysql】InnoDB 引擎中的数据页结构

    InnoDB 是 mysql 的默认引擎,也是我们最常用的,所以基于 InnoDB,学习页结构.而学习页结构,是为了更好的学习索引. 一.页的简介 页是 InnoDB 管理存储空间的基本单位,一个页的 ...

  2. Appium - monkey自定义脚本实践(四)

    monkey自定义脚本实践 一.获取元素坐标点位置 二.Monkey脚本API简介 常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,M ...

  3. Requests方法 -- Token获取操作

    获取token和code流程如下:a.先登陆抓包查看post(提交表单操作)头中是否有token和code关键字b.已知步骤a中出现了token和code,不登录前刷新登陆页面,查看response中 ...

  4. C++:常量

    /** https://www.runoob.com/cplusplus/cpp-constants-literals.html * 常量: 固定值,一旦定义不能被修改 * 整数常量:可以是十进制.八 ...

  5. python errno库与socket.connect_ex()方法的结合使用

    前言:一般socket链接会首选connect方法,该方法会一直尝试链接.那么今天展示下connect_ex()方法,该方法如果链接成功会返回0,失败会返回errno库中的errorcode中的key ...

  6. tomcat与springmvc 结合 之---第18篇 StandContext容器和SpringMVC的监听器的模型

    writedby张艳涛 如何使用tomcat的监听器 public class BootStrap_ex06 { public static void main(String[] args) { Ht ...

  7. solr(CVE-2017-12629)远程命令执行

    影响版本Apache Solr 5.5.0到7.0.1版本 solr(CVE-2017-12629-RCE) 环境搭建 1.burp检测 创建listen POST /solr/demo/config ...

  8. shiro反序列化550、721

    shiro550反序列化 获取docker镜像 docker pull medicean/vulapps:s_shiro_1 重启docker systemctl restart docker 启动d ...

  9. java获取日出日落时间

    import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  10. bugku-misc 9-16

    宽带信息泄露 拿到一个bin后缀的文件,知道是一个二进制文件,但是题目提到的和宽带有关,flag就是用户名.可以使用RoutePassView这个工具,使用的时候记得关闭杀毒软件. 工具可以在这里下载 ...