什么是数据库连接池?Druid(德鲁伊)连接池的使用详细解读

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. 数据库连接池

2. 概念

在这里插入图片描述

前面在 JDBC API 的使用详细解读文章中获取的数据库连接对象 conn在使用时创建使用完毕就会将其销毁。这样重复创建和销毁的过程实际上是消耗性能和时间的当大量用户访问数据库时每次都要进行数据库连接对象的创建和销毁对系统来说是一种大量的消耗。那么我们怎样来提升性能和节省时间呢

我们使用数据库的数据库连接池来重复利用数据库的连接对象即 Connection 类对象。

image-20230123214035329

数据库连接池是一个负责分配管理数据库连接对象的容器它允许应用程序重复使用同一个数据库连接对象。数据库连接池可以释放空闲时间超过最大空闲时间的数据库连接对象来避免因为没有释放数据库连接对象而引起的数据库连接遗漏。

image-20230123221109976

连接池是在一开始就创建好了一些连接对象存储起来用户需要连接数据库时不需要自己创建连接对象而只需要从连接池中获取一个连接对象进行使用使用完毕后再将连接对象归还给连接池。这样就可以起到资源重用的作用也节省了频繁创建连接销毁连接所花费的时间从而提升了系统响应的速度

总结来说使用数据库连接池有以下几点好处

  • 实现资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

3. 实现

sun 公司提供了数据库连接池的标准接口 DataSource 我们一般使用第三方实现该接口的实现类所有实现类都继承了其获取连接的方法

Connection getConnection()

常见的数据库连接池有

  • Druid德鲁伊
  • C3P0
  • DBCP

使用了数据库连接池以后在获取数据库连接对象时不需要通过 DriverManager类的 getConnection() 方法而是直接从数据库连接池中获取。我们今天要使用的是 Druid 连接池它是阿里巴巴开源的数据库连接池项目其功能强大性能优秀使用占比高是一款优秀的数据库连接池。

4. Druid 连接池的使用

下面以 Druid 连接池为例讲解通过数据库连接池获取数据库连接对象主要有以下几个步骤

  1. 导入Druid 连接池的 jar 包
  2. 定义配置文件
  3. 加载配置文件
  4. 获取数据库连接池对象
  5. 获取连接

第一步将Druid的jar包放入项目中的Lib目录下作为库文件jar包自行下载。

image-20230123222631273

选择 Add as Library选择模块下有效

image-20230123222706346

第二步编写配置文件在 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); //获取到了连接后就可以继续做其他操作了  
    }
}

运行结果

image-20230123224744196

其中DruidDataSourceFactory 类中的 createDataSource() 方法既可以传入一个 Map 集合也可以传入 prop 对象其中都存放配置信息用来获取连接池对象。

小tips如果代码中文件的相对路径报错可以使用 System.getProperty("user.dir") 获取项目的当前路径。

5. 总结

本文主要探讨了使用数据库连接池提升系统性能和时间的问题以及在 idea 中使用 Druid 连接池获取数据库连接对象来操作 MySQL 数据库的问题Druid 连接池是阿里巴巴的一个优秀的高性能的开源数据库连接池项目文章是 JDBC 部分的基础内容。


Java编程基础教程系列

JDBC快速入门如何使用JDBC操作数据库

如何使用JDBC操作数据库JDBC API的使用详细解读

MySQL详细教程2023年硬核学习路线

JavaWeb 系列文章持续更新下期见。感谢点赞支持~

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 数据库