数据库连接池是个容器,负责分配管理数据库连接。
他允许应用程序重复使用一个现有的数据库连接,而不是重新创建一个。
释放空闲时间超过最大时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。
优点:资源重用;避免数据库连接遗漏;提升系统相应速度。
之前我们使用连接都是创建一个connection对象,使用完毕将其销毁,这样重复创建销毁很耗费计算机的性能和时间。
使用了数据库连接池后,就可以将connection对象重复使用。
连接池就是一开始就创建好了一些连接对象(connection)存储起来,当用户需要连接数据库时,可以从连接池中取出一个来使用,使用完毕后归还给数据库连接池;这样起到了资源重用,也节省了频繁创建对象使用的时间,从而提升了系统响应的速度;
数据库连接池的实现
标准接口:DataSource
官方提供的数据库连接池标准接口,由第三方组织实现此接口,该接口实现了获取连接的功能
Connection getConnection()
那么以后就不需要通过 DriverManager 对象获取 Connection 对象,而是通过连接池(DataSource)获取 Connection 对象。
常见的数据库连接池:Druid;DBCP;C3P0;
我们更多使用Druid
Druid时阿里巴巴开源的数据库连接池项目,很好,时Java语言最好的数据库连接池之一
Druid的使用
1、导入jar包
2、定义配置文件
3、加载配置文件
4、获取数据库连接池对象
5、获取连接
项目结构如下
配置文件如下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?
useSSL=false&useServerPrepStmts=true
username=root
password=1234
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
代码实现如下
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.Properties;
public class d1_DruidDemo {
public static void main(String[] args) throws Exception {
//1、导入jar包
//2、定义配置文件
//3、加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("jdbc_demo\\src\\druid.properties"));
//4、获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//5、获取数据库连接
Connection connection=dataSource.getConnection();
System.out.println(connection);
//6、定义sql
String sql="update account set money=2000 where id=1";
//7、获取执行sql的对象 statement
Statement stmt=connection.createStatement();
//8、执行sql
int count=stmt.executeUpdate(sql); //受影响的行数
//9、处理结果
System.out.println(count);
//10、释放资源
stmt.close();
connection.close();
}
}