1. 数据库连接池
1.1 概念
数据库连接池就是一个存放数据库连接的容器,当系统初始化好后,容器被创建,容器中会申请一些连接对象。当用户来访问数据库时,从容器中获取连接对象,用户访问完之后就会将连接对象归还给容器,而不会自行释放连接所拥有的系统资源。
使用数据库连接池的好处是节约资源,以及使得用户的访问更加高效。
1.2 实现
创建数据库连接池需要实现Java中的标准接口javax.sql.DataSource
,方法为:
getConnection()
:获取连接Connection.close()
:归还连接,如果连接对象是从连接池中获取的,那么调用Connection.close()
不会再关闭连接,而是执行归还连接操作
2. 连接池实现
虽然可以通过实现DataSource
接口来自定义实现数据库连接池,但更多的情况是直接使用开源的连接池。常用的第三方数据库连接池有DBCP、C3P0、DbUtils和Druid等。
2.1 DBCP
2.2 C3P0
package JDBC.ConnectionPools;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
public class C3P0 {
public static void main(String[] args) throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/sql_store" +
"?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true");
dataSource.setUser("root");
dataSource.setPassword("120809");
final Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}