首页 > 编程笔记 > Java笔记 阅读:37

Druid数据库连接池的用法(附带实例)

通义灵码
Java 程序中通过 JDBC 进行数据库的增删改查,每次连接数据库都需要通过 DriverManager 获取新连接,而且用完就要抛弃断开释放资源。

这样一来,连接的利用率较低,浪费比较严重。对于数据库服务器来说压力较大,数据库服务器和 Java 程序对连接数无法控制,很容易导致数据库服务器崩溃。

本节所讲的数据库连接池是数据库连接对象的缓冲区,负责申请、分配管理,以及释放连接的操作。

首先,建立一个连接池,这个池中能容纳一定数量的连接对象。一开始,我们可以先替用户创建一些连接对象。当用户需要使用连接对象时就直接从池中获取,无须重新建立连接,这样也可以节省时间。用户使用完,再把连接对象放回连接池中,下次别人还可以接着使用。这样一来大大提高了连接的使用率。

如果当连接池中的现有连接对象都用完了,那么连接池可以向服务器申请新的连接对象放到池中,直到池中的连接数量达到“最大连接数”就不能再申请了。这时,如果有用户来获取池中的连接对象,没有拿到连接只能等待。

JDBC 的数据库连接池使用“javax.sql.DataSource”来表示,DataSource 只是一个接口,通常被称为数据源。该接口通常由服务器(如 Weblogic、WebSphere、Tomcat)提供实现,也有一些开源组织提供实现,例如 DBCP、C3P0、BoneCP、Druid 等:
下面对 Druid 数据库连接池的具体使用展开介绍。Druid 数据库连接池的使用很简单,具体步骤如下:
  1. 在项目中引入 Druid 的依赖包“druid-1.0.9.jar”,创建数据库连接池对象。
  2. 设置数据库的相关信息,该信息通常存储在一个单独的配置文件中,如 druid.properties。
  3. 通过编写代码,实现从数据库连接池中获取数据库连接对象即可。

例如,在 chapter07_JdbcTest 项目中,引入 Druid 的依赖包,并创建 druid.properties 文件设置数据库信息。目录结构如下图所示:


图 1 目录结构

druid.properties 文件的示例代码如下:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/atguigu
username=root
password=root

创建 TestPool 类,编写代码实现从数据库连接池中获取数据库连接对象,示例代码如下:
  1. package com.atguigu.pool;
  2. //省略 import 语句
  3.  
  4. public class TestPool {
  5. public static void main(String[] args) throws Exception {
  6. Properties pro = new Properties(); //这是一个 map
  7. //由于druid.properties文件存放在src目录下,最后会随着.java文件一起编译到类路径下(class)
  8. //通过类加载器加载资源配置文件
  9. pro.load(TestPool.class.getClassLoader().getResourceAsStream("druid.properties"));
  10. DataSource ds = DruidDataSourceFactory.createDataSource(pro);
  11.  
  12. Connection connection = ds.getConnection();
  13. System.out.println("connection = " + connection);
  14. }
  15. }
运行代码后测试连接,查看控制台,如下图所示:


图 2 从数据库连接池获取连接对象

从图中可知,成功通过 Druid 数据库连接池获取连接对象。

相关文章