一、什么是数据库连接池?
数据库连接池是个容器,负责分配、管理数据库连接(Connection),它允许应⽤程序重复使⽤⼀个现有的数据库连接,⽽不是再重新建⽴⼀个;释放空闲时间超过最⼤空闲时间的数据库连接来避免因为没有释放数据库连接⽽引起的数据库连接遗漏。
二、据库连接池的好处
1.资源重⽤
2.提升系统响应速度
3.避免数据库连接遗漏
注:之前我们代码中使⽤连接是没有使⽤都创建⼀个Connection对象,使⽤完毕就会将其销毁。这样重复创建销毁的过程是特别耗费计算机的性能的及消耗时间的。⽽数据库使⽤了数据库连接池后,就能达到Connection对象的复⽤连接池是在⼀开始就创建好了⼀些连接(Connection)对象存储起来。⽤户需要连接数据库时,不需要⾃⼰创建连接,⽽只需要从连接池中获取⼀个连接进⾏使⽤,使⽤完毕后再将连接对象归还给连接池;这样就可以起到资源重⽤,也节省了频繁创建连接销毁连接所花费的时间,从⽽提升了系统响应的速度。
三、Druid数据库连接池的实现
1.所有连接池的标准接⼝:DataSource
官⽅(SUN) 提供的数据库连接池标准接⼝,由第三⽅组织实现此接⼝。该接⼝提供了获取连接的功能:就可以直接通过连接池(DataSource)获取Connection对象。
2.常见的数据库连接池
2.1 DBCP
2.2 C3P0
2.3 Druid
注:现在使⽤更多的是Druid,它的性能⽐其他两个会好⼀些。
3.Druid(德鲁伊)
Druid连接池是阿⾥巴巴开源的数据库连接池项⽬功能强⼤,性能优秀,是Java语⾔最好的数据库连接池之⼀
4.Druid数据库连接池的使⽤
①导⼊maven依赖包
创建一个lib文件夹,将Druid依赖包复制进去,并在IDEA中添加到添加此依赖
② 定义配置⽂件【url、⽤户账户密码、连接数据库的信息】
在模块的src下创建一个druid.properties文件,配置信息如下(因自己情而定义,这些属性的解释在下面表中):
user:root
password:1234
url:url=jdbc:mysql:///test
driverClassName:com.mysql.jdbc.Driver
③ 加载配置⽂件【Properties】
Properties prop = new Properties();
prop.load(new FeilInputStream(“druid.properties”));
④ 获取数据库连接池对象【⼯⼚⽅式获取】
DataScorce dataSource = DruidDataSourceFactory.createDataSource(prop);
⑤ 获取数据库连接对象
dataSource.getConnection();
5.Druid配置详解
属性 | 说明 |
---|---|
url | 数据库的jdbc连接地址。一般为连接oracle/mysql。mysql示例如下:jdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数=值&参数=值 |
username | 登录数据库的用户名 |
password | 登录数据库的用户密码 |
initalSize | 启动程序时,在连接池中的初始化多少个连接 |
maxActive | 连接池中最多支持多少个活动会话 |
maxWait | 程序向连接池中请求连接时,超过其值后,认为本次请求失败,及连接冲中没有可用连接 |
连接部分代码演示:
/**
* 使用druid数据库连接池
* @throws Exception
*/
//因为连接池就只需就创建一个所以定义在获取连接的方法之外
private static DataSource dataSource;
static {
try {
Properties pros = new Properties();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
pros.load(is);
//根据配置文件件创建连接池
dataSource = DruidDataSourceFactory.createDataSource(pros);
}catch (Exception e){
e.printStackTrace();
}
}
//将连接封装成方法,提供给其他类使用
public static Connection getConnection3() throws Exception {
Connection connection = dataSource.getConnection();
return connection;
}