一、C3P0数据库
在目前的开发中,C3P0是使用较多的开源数据库连接池之一,它性能高效,支持JDBC定义的规范,扩展性好,可以和Hibernate,Spring等开源框架整合使用,很受开发者欢迎。
C3P0数据库连接池通过核心类ComboPooledDataSource实现DataSource接口,该类支撑着整个连接池的主要功能。它提供了充足的方法来实现对数据库连接池的配置和操作。
1、C3P0数据库连接池的使用
使用C3P0数据库,主要对其核心类ComboPooledDataSource方法的调用,在此之前要多的一个可用的ComboPooledDataSource对象。通常情况下,获取该对象有两种方法。
(1)直接创建ComboPooledDataSource对象并设置属性
将C3P0连接池的jar包导入到工程的lib目录下。
C3P0连接池jar包百度云下载链接:https://pan.baidu.com/s/17G0Lf9ZXfrMWLp5mQDeyuQ
提取码:nml5
package com.jdbc.pool;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class PoolC3p01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//核心类
ComboPooledDataSource comboPooledDataSource=new ComboPooledDataSource();
try{
//基本四项设置
comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/MF");
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("root");
//设置
//初始化连接数为10
comboPooledDataSource.setInitialPoolSize(10);
//设置最大连接数为20
comboPooledDataSource.setMaxPoolSize(20);
//设置最小连接数为3
comboPooledDataSource.setMinPoolSize(3);
//设置每次创建的连接数
comboPooledDataSource.setAcquireIncrement(3);
System.out.println(comboPooledDataSource.getConnection());
}catch(Exception e){
e.printStackTrace();
}
}
}
运行结果:
最后一行输出了数据库连接池中的connection对象,说明了C3P0数据库连接池成功获得数据库连接对象。
(2)通过读取配置文件创建ComboPooledDataSource对象
首先将数据库连接池的配置信息写入c3p0-config.xml文件中,然后通过ComboPooledDataSource类的构造方法读取配置信息并创建该类对象,最后调用该类对象的方法获取数据库连接。
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">
jdbc:mysql://localhost:3306/MF
</property>
<property name="user">root</property>
<property name="password">itcast</property>
<property name="checkoutTimeout">30000</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
<named-config name="itcast">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">
jdbc:mysql://localhost:3306/MF
</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">15</property>
</named-config>
</c3p0-config>
测试类:
package com.jdbc.pool;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class PoolC3p02 {
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
ComboPooledDataSource dataSource=new ComboPooledDataSource("itcast");
System.out.println(dataSource.getConnection());
}
}
执行结果:成功连接到C3p0数据库连接池,输出了connecion对象