使用数据库连接池Druid来快速访问数据库
- 简介
- 连接池访问数据库的优势及原理
- JDBC连接的劣势
- 数据库连接池的原理
- 开源项目 alibaba/druid 地址
- 使用方法
- 准备jar包
- 定义Druid的配置文件
- 代码示例
- 示例一
- 示例二
简介
数据库连接池是一个容器,负责分配、管理数据库的连接(Connection)。通过连接池可以让应用程序重复使用一个现有的数据库连接,而不是再重新建立一个,从而节省了大量时间。连接池还会释放空闲时间超过指定最大时长的数据库连接,以避免因为没有释放数据库连接而引起的数据库连接遗漏。
连接池的好处主要有三:
- 资源复用
- 提升系统响应速度
- 防止数据库连接泄露
连接池访问数据库的优势及原理
JDBC连接的劣势
使用JDBC连接数据库时
- 都需要创建一个Connection对象——应用程序 使用数据库驱动 建立的和数据库的间的连接是TCP连接。
- 用户还需要进行身份验证,身份验证通过后应用才能进行读写数据库操作。
- 连接使用完毕后需要再将其销毁。而这种创建、销毁、再创建、再销毁的重复过程会特别耗费计算机性能以及程序运行时长。
而数据库如果使用了数据库连接池,就能达到Connection对象的复用效果。
数据库连接池的原理
数据库连接池在一开始就创建好了一些【数据库连接对象】存储起来。用户需要连接数据库时,不需要自己创建连接,只需要从连接池中获取一个进行使用就行了,使用完毕后将连接对象归还给连接池,由此实现了资源重用(自认指connection的创建和销毁),并节省了数据库连接的频繁创建、销毁所花费的时间,从而提高系统响应的速度。
开源项目 alibaba/druid 地址
此处给出alibaba/druid的GitHub地址https://github.com/alibaba/druid。
使用方法
准备jar包
注意,使用Druid数据库连接池来实现数据库访问时,不仅需要druid的jar包,还需要对应数据库的访问jar包(否则会报错“java.sql.SQLException: com.mysql.cj.jdbc.Driver”)。
此处先给出1.2.18版本druid的maven坐标。
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.18</version></dependency>定义Druid的配置文件
数据库驱动的名称driverClassName与直接使用JDBC jar包访问数据库时使用的名称一致。
driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useServerPrepStmts=trueusername=rootpassword=# 初始化连接数量initialSize=5# 最大连接数maxActive=10# 最大等待时间maxWait=3000代码示例
待补入此文,下方示例好像是错的 = =,因为使用的DataSourcejavax.sql.DataSource,详见下方示例二。
示例一
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;