初始C3P0连接池
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连接池的更多相关文章
- C3P0连接池详解及配置
C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...
- C3P0连接池详细配置
C3P0连接池详细配置 转自http://msq.javaeye.com/blog/60387 <c3p0-config> <default-config> <!--当连 ...
- Hibernate的配置中,c3p0连接池相关配置
一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...
- C3P0连接池使用教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6405861.html 在项目中的应用见: https://github.com/ygj0930/Coupl ...
- Hibernate配置C3P0连接池
引入C3PO包 在hibernate.cfg.xml文件中配置 <!-- 数据库连接池的使用 --> <!-- 选择使用C3P0连接池 --> <property nam ...
- C3P0连接池一些基本配置
C3P0连接池配置 数据库连接是一个耗费大量资源且相当慢的操作,所以为了提高性能和连接速度,诞生了连接池这样的概念. 在多用户并发操作过程中,连接池尤为重要. 它是将那些已连接的数据库连接存放在一个容 ...
- Java开发笔记(一百五十)C3P0连接池的用法
JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意.问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要 ...
- c3p0连接池]
<c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...
- c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?
问题描述: jfinal做的api系统中,在正常调用接口一段时间后,突然再调用接口的时候,该请求无响应api系统后台也无错误信息 (就是刚开始接口调用是正常的,突然就无响应了) 于是啊,就开始找错误. ...
随机推荐
- MySQL -- 表联结
创建联结:(使用WHERE联结)SELECTvend_name,prod_name,prod_priceFROMvendors,productsWHEREvendors.vend_id=product ...
- Java成长之路--一个非科班生的进阶之路
前言 笔者从事Java开发六年有余,从什么都不懂的小白一路成长到上市公司管理20人的技术leader.管理的团队,虽然人数不算多,但也是对于我这个非科班生这么多年努力的一种肯定.在技术的道路上,我没有 ...
- Cent OS 7 本地yum源配置与安装
一.本地yum源 1.添加一个新的yum源配置文件dvd.repo(文件名字自定义) vi etc/yum.repos.d 添加新的内容: name=rhel_dvd ...
- [蓝牙嗅探-Ubertooth One] 千元开源蓝牙抓包 Ubertooth One 安装和使用
目录 前言 1.编译 Ubertooth tools 1.1.准备工作 1.2.编译安装 libbtbb 1.3.编译安装 Ubertooth tools 1.4.Wireshark 插件 1.5.更 ...
- odoo14学习----x2many操作与图片设置继承image.mixin
三种方式实现数据更新 一,如上所述 二,通过对数据集调用update({'key':value,'key1':value1..})更新数据集 三,调用write函数,与update类似,传递字典. ...
- 10分钟物联网设备接入阿里云IoT平台
前言最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程.本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工作1 ...
- jquery : 菜单根据url变颜色
//菜单根据url变颜色$(document).ready(function(){ $('#nav li a').each(function(){ if($($(this))[0].href==Str ...
- K-Fold 交叉验证
转载--原文地址 www.likecs.com 1.K-Fold 交叉验证概念 在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集.测试集是与训练独立的数据,完全不参与训练,用于最终模型的 ...
- 大数据学习(15)—— B+树和LSM
这一节介绍数据库存储引擎常用的两种数据结构.作为关系型数据库的代表,MySql的InnoDB使用B+树来存储索引.作为NoSQL的代表,HBase使用的LSM树,我们来看看两者有什么区别. B+树 B ...
- Salesforce Integration 概览(四) Batch Data Synchronization(批量数据的同步)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 前两篇博客讲了一下 ...