Druid数据库连接池的简单介绍和使用
引言
????????Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。
????????Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入 了日志监控。
????????Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。
????????Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
????????Spring Boot 2.0 以上默认使用 HikariCP 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀 的数据源。
Github地址:https://github.com/alibaba/druid/
中文参考地址:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E 9%A2%98
一,数据库连接池
1.1,什么是数据据库连接池
????????连接池是一种常用的技术,为什么需要连接池呢?这个需要从TCP说起。假如我们的服务器跟数据库没 有部署在同一台机器,那么,服务器每次查询数据库都要先建立连接,一般都是TCP链接,建立连接就需要3 次握手了,假设后台服务跟数据库的单程的访问时间需要10ms,那么光是建立连接就花了30ms,并且TCP 还有慢启动的机制,实际上一次查询可能还不止1次TCP来回,查询效率就会大大降低。
1.2,什么要使用数据库连接池
????????为了解决上述问题,我们就需要维护一些长链接,这样就不用每次都去建立连接,毕竟建立连接除了占 用时间,还需要一些其他的系统资源。另外的好处,连接池让我们更加容易地管理,一方面是可以避免数据 库资源都被某几个API占据,另一方面也可以避免资源泄露。
1.3,常用的连接池组件
- c3p0
- dbcp pool dbcp2
- tomcat servlet容器,也内置一个连接池(dbcp)
- druid 国内项目推荐使用此连接池,排行第一
- HikariCP springboot 默认推荐
二,Druid使用
1.建立pom.xml配置maven依赖
到maven仓库搜寻源码依赖:Maven Repository: com.alibaba ? druid ? 1.2.20 (mvnrepository.com)
<!-- com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.20</version>
</dependency>
2.创建.properties的配置文件
在属性配置文件中配置如下:?
//JDBC驱动的名字
driverClassName=com.mysql.cj.jdbc.Driver
//连接字符串
url=jdbc:mysql://localhost:3306/files
//数据库的用户名
username=root
//数据库密码
password=123
//程序启动时默认创建的数据库连接数
initialSize=10
//如果连接数大于intitialSize的数后创建的最大连接数
maxActive=20
3.创建java类使用druid连接数据库
public class DruidSample {
public static void main(String[] args) {
//1.加载属性文件
Properties properties=new Properties();
//DruidSample.class.getResource("src/druidConfig.properties")表示获取
// 当前DruidSample类路径下的属性文件的路径
String propertyFile=DruidSample.class.getResource("/druidConfig.properties").getPath();
try {
//读取配置文件
properties.load(new FileInputStream(propertyFile));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!