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. 通过http将yum仓库发布

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独构建http和发布yum仓库到内网的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要 ...

  2. springmvc学习指南 之---第27篇 spring如何实现servlet3.0无web.xml 配置servlet对象的

    writedby 张艳涛 基于web.xml配置,有人说麻烦,tomcat给按照servlet3.0,实现了基于注解@WebServlet,有人说springmvc的springmvc.xml配置麻烦 ...

  3. tomcat与springmvc 结合 之---第20篇 springmvc 对于加载的bean对象存储在哪里

  4. maven 工程构建 之_____<dependencyManagement>标签

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  5. HttpRunner3源码阅读: 1. 目录结构分析

    初衷 身处软件测试行业的各位应该都有耳闻HttpRunner 开源测试工具/框架(接口测试),作者博客 为什么出这系列? 不少测试同行都建议阅读HttpRunner,源码学习其设计思想. 社区当下Py ...

  6. python实现常用五种排序算法

    一.冒泡排序 原理: 比较相邻的元素.如果第一个比第二个大就交换他们两个 每一对相邻元素做同样的工作,直到结尾最后一对 每个元素都重复以上步骤,除了最后一个 第一步: 将乱序中的最大值找出,逐一移到序 ...

  7. mout -t -cifs 解析

    mount -t cifs //<azurefile_url> <linux_mountpoint(folder)> df 查看挂载 umount取消挂载 umount -l ...

  8. ES6继承和ES5继承是完全一样的么?

    继承方式 ES5 prototype 继承 通过原型链(构造函数 + [[prototype]])指向实现继承. (备注:后续__proto__我都会写成[[prototype]]这种形式) 子类的 ...

  9. 位(bit)、字节(Byte)、字(Word)、双字(Dword)之间的关系

    位(bit): bit(简写:b),是计算机数据存储最小的单位,二进制中,0或者1就是一个位(比特位)bit. 字节: Byte(简写:B),是计算机信息技术用于计量存储容量的一种计量单位,通常情况下 ...

  10. IntelliJ IDEA lombok插件的安装配置和使用

    一.安装 1.首先我们需要安装IntelliJ IDEA中的lombok插件,打开IntelliJ IDEA后点击菜单栏中的File-->Settings,或者使用快捷键Ctrl+Alt+S进入 ...