连接池介绍
1. 连接池的作用
在JDBC请求MySQL数据库的SQL操作都要进行连接、释放的过程,在并发量大请情况下,频繁的连接和释放势必会消耗系统性能,可以使用连接复用的方式来让连接重复使用。
2. 连接池工作原理
数据库连接池的基本思想为数据连接简历一个缓冲池,预先在池中放入一定数量的连接,当有数据库操作时,在池中获取一个空闲的连接来支持数据库操作,当当前的数据库操作完成之后,将连接放回池中。
3. 连接池的优势
- 资源复用
- 更快的响应速度
- 新的资源分配手段
- 统一的连接关系,避免数据库连接泄漏
4. 连接池的使用
- 导入连接
- 参数配置
- 通过连接池获取连接
- 进行SQL操作
5.操作
连接池有:c3p0、dbcp、Druid等。
以C3p0为例讲解:
5.1 引入c3p0的依赖
<!--c3p0连接池--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency>
5.2 给定c3p0的配置文件:c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><!--配置连接池mysql--><named-config name="mysql"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/ssms</property><property name="user">root</property><property name="password">123456</property><!-- 初始化连接数 --><property name="initialPoolSize">10</property><!--最大空闲时间,多少秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --><property name="maxIdleTime">30</property><!--连接池中保留的最大连接数。Default: 15 --><property name="maxPoolSize">100</property><!-- 最小连接数 --><property name="minPoolSize">10</property></named-config>
</c3p0-config>
5.3 连接池编码:
//设置数据源DataSourceComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");
try {//获取ConnectionConnection connection = dataSource.getConnection();
//获取Statement对象Statement statement = connection.createStatement();
String sql = "select * from user where id = 25";ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {Integer id1 = resultSet.getInt("id");String account = resultSet.getString("account");String name = resultSet.getString("name");System.out.println("Id:" + id1 + ",name:" + name);}
} catch (SQLException e) {e.printStackTrace();}}