数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。(来自:百度百科数据库连接池)。实质上,数据库连接池,就是一个用来存放数据库连接(Connection)的容器(集合),当系统初始化后,容器就会被创建,并且申请号一些数据库连接存放在容器中,当用户访问数据库时,从容器中获取数据库连接,访问完之后,就会归还连接对象给容器。
步骤:
C3P0Demo:
package cn.zhuobo.dataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class C3P0Demo02 {
public static void main(String[] args) throws SQLException {
// 默认版本的数据库连接池,ComboPooledDataSource()没有参数
/*DataSource dataSource = new ComboPooledDataSource();
for (int i = 0; i < 11; i++) {
Connection connection = dataSource.getConnection();
System.out.println(i + ":" + connection);
if(i == 3) {
connection.close();// 归还连接
}
}*/
testNamedConfig();
}
//这是另一个版本的数据库连接池,带有参数,查看配置文件可以知道,该连接池的最大连接对象为8
// ComboPooledDataSource()有参数
public static void testNamedConfig() throws SQLException {
DataSource dataSource1 = new ComboPooledDataSource("otherc3p0");
for (int i = 0; i < 9; i++) {
Connection connection = dataSource1.getConnection();
System.out.println(i + ":" + connection);
}
}
}
使用步骤:
DruidDataSourceFactory.createDataSource(pro);
DruidDemo:
package cn.zhuobo.dataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
public class DruidDemo01 {
public static void main(String[] args) throws Exception {
// 加载配置文件,classLoader还需要深入了解一下
Properties pro = new Properties();
InputStream is = DruidDemo01.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
// 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(pro);
// 获取连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
一般还是自己定义一个工具类,用来加载配置文件,初始化连接池,释放资源等
原文:https://www.cnblogs.com/zhuobo/p/10716614.html