1. 数据库连接池
2. 概念
前面在 JDBC API 的使用详细解读文章中,获取的数据库连接对象 conn,在使用时创建,使用完毕就会将其销毁。这样重复创建和销毁的过程实际上是消耗性能和时间的,当大量用户访问数据库时,每次都要进行数据库连接对象的创建和销毁,对系统来说是一种大量的消耗。那么我们怎样来提升性能和节省时间呢?
我们使用数据库的数据库连接池来重复利用数据库的连接对象,即 Connection 类对象。
数据库连接池是一个负责分配,管理数据库连接对象的容器,它允许应用程序重复使用同一个数据库连接对象。数据库连接池可以释放空闲时间超过最大空闲时间的数据库连接对象来避免因为没有释放数据库连接对象而引起的数据库连接遗漏。
连接池是在一开始就创建好了一些连接对象存储起来,用户需要连接数据库时,不需要自己创建连接对象,而只需要从连接池中获取一个连接对象进行使用,使用完毕后再将连接对象归还给连接池。这样就可以起到资源重用的作用,也节省了频繁创建连接销毁连接所花费的时间,从而提升了系统响应的速度。
总结来说使用数据库连接池有以下几点好处:
- 实现资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
3. 实现
sun 公司提供了数据库连接池的标准接口 DataSource
,我们一般使用第三方实现该接口的实现类,所有实现类都继承了其获取连接的方法:
Connection getConnection()
常见的数据库连接池有:
- Druid(德鲁伊)
- C3P0
- DBCP
使用了数据库连接池以后,在获取数据库连接对象时不需要通过 DriverManager类的 getConnection() 方法,而是直接从数据库连接池中获取。我们今天要使用的是 Druid 连接池,它是阿里巴巴开源的数据库连接池项目,其功能强大,性能优秀,使用占比高,是一款优秀的数据库连接池。
4. Druid 连接池的使用
下面以 Druid 连接池为例,讲解通过数据库连接池获取数据库连接对象,主要有以下几个步骤:
- 导入Druid 连接池的 jar 包
- 定义配置文件
- 加载配置文件
- 获取数据库连接池对象
- 获取连接
第一步:将Druid的jar包放入项目中的Lib目录下作为库文件,jar包自行下载。
选择 Add as Library,选择模块下有效
第二步:编写配置文件,在 src 目录下创建文件 druid.properties
。
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
Druid 配置文件中有很很多的参数,这里配置了用到的几项,其中有连接数据库的名称和密码,初始连接数,最大连接数,最大等待时间等,超过了最大等待时间配置文件还没有加载成功的话,程序就会报错。
第三步:在代码中加载配置文件
//3. 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
第四步:在代码中获取连接池对象
//4. 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
第五步:获取数据库连接对象
//5. 获取数据库连接 Connection
Connection connection = dataSource.getConnection();
System.out.println(connection); //获取到了连接后就可以继续做其他操作了
示例,Druid的使用完整代码:
public class 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 connection = dataSource.getConnection();
System.out.println(connection); //获取到了连接后就可以继续做其他操作了
}
}
运行结果:
其中,DruidDataSourceFactory 类中的 createDataSource()
方法既可以传入一个 Map 集合,也可以传入 prop 对象,其中都存放配置信息,用来获取连接池对象。
小tips:如果代码中文件的相对路径报错,可以使用
System.getProperty("user.dir")
获取项目的当前路径。
5. 总结
本文主要探讨了使用数据库连接池提升系统性能和时间的问题,以及在 idea 中使用 Druid 连接池获取数据库连接对象来操作 MySQL 数据库的问题,Druid 连接池是阿里巴巴的一个优秀的,高性能的开源数据库连接池项目,文章是 JDBC 部分的基础内容。
Java编程基础教程系列
JavaWeb 系列文章持续更新,下期见。感谢点赞支持~
转载:https://blog.csdn.net/zhangxia_/article/details/128754631