up:: Druid连接池的配置和使用
Druid是阿里巴巴的实现;C3P0是mchange的实现;
国内2014年之前的一些历史项目中使用C3P0的比较多;14年以后,阿里巴巴的Druid连接池使用的比较多;
1.下载C3P0
C3P0是mchange这个机构下面的开源项目,也是一个不断更新的数据库连接池项目;
那么具体C3P0的下载如下:
2.将C3P0的jar包引入到工程中
首先,将俩jar包复制进工程的lib目录下;
然后,将C3P0的jar包加入到工程依赖中;
3.C3P0使用案例
(1)创建c3p0-config.xml
c3p0-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true</property>
<property name="user">root</property>
<property name="password">12345</property>
<!-- 连接池初始连接数量 -->
<property name="initialPoolSize">10</property>
<!--最大连接数量-->
<property name="maxPoolSize">20</property>
</default-config>
</c3p0-config>
c3p0-config.xml:说明:
(1)【c3p0-config】根节点不能随便写,需要按照c3p0的要求;
(2)【default-config】子节点:代表默认的配置信息;
(3)在xml中&是特殊字符,需要进行转义,即在xml中的&需要写成【&】;
(2)创建C3P0Sample类
package com.imooc.jdbc.sample;
import com.imooc.jdbc.common.DbUtils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class C3P0Sample {
public static void main(String[] args) {
//1.加载配置文件
//2.创建DateSource
// 因为C3P0配置文件的名字是定死的,必须是c3p0-config.xml,而且必须是放在src的根路径下(自然工程编译后,这个配置文件会到classes的根路径下),
// 这样在执行new ComboPooledDataSource();的时候就会自动加载这个配置文件;并且根据这个配置文件创建DataSource数据源对象;
DataSource dataSource = new ComboPooledDataSource();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//3.得到数据库连接
conn = dataSource.getConnection();
pstmt = conn.prepareStatement("select * from employee limit 0,10");
rs = pstmt.executeQuery();
while (rs.next()) {
Integer eno = rs.getInt(1);
String ename = rs.getString("ename");
Float salary = rs.getFloat("salary");
String dname = rs.getString("dname");
System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
/**
* 不使用连接池:conn.close()关闭连接;
* 使用连接池:conn.close()将连接回收至连接池;
*/
DbUtils.closeConnection(rs,pstmt,conn);
}
}
}
C3P0Sample类的几点说明:
(1) 【1.加载配置文件】和【2.创建DateSource】只需一条代码就能完成:【DataSource dataSource = new ComboPooledDataSource();】
因为C3P0配置文件的名字是定死的,必须是c3p0-config.xml,而且必须是放在src的根路径下(自然工程编译后,这个配置文件会到classes的根路径下),这样在执行new ComboPooledDataSource();的时候就会自动加载这个配置文件;并且根据这个配置文件创建DataSource数据源对象;
(2) 和Druid类似,C3P0也可以观察其连接效果
C3P0Sample类运行效果: