为什么使用数据库连接池:
每次从数据库调用数据,先创建链接,结束时需要手动关闭释放资源,耗时and不安全,而且能同时支持的链接不多,在整个工程创建时,创建多个数据库链接集中管理,放进数据库连接池,使用时只要申请调用链接就行。
数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。
示例:
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
public class DBSUtil {
//1 使用连接池 导入jar包
//2 创建DruidDataSource对象
private static DruidDataSource dds;
//静态代码块
static{
//3 设置连接参数
dds = new DruidDataSource();
dds.setUrl("?");
dds.setUsername("?");
dds.setPassword("?");
}
//获取对象函数
public static DataSource getDBDS(){
return dds;
}
//工具中获取数据库链接
public static Connection getDBConn(){
try {
return dds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
架包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>