池的概念以及数据库连接池 Druid

1.池的概述

池就相当于一个共享资源,是对资源的整合和调配,节省存储空间,当需要的时候可以直接在池中取,用完之后再还回去。

为什么需要连接池

假如没有连接池,我们操作数据库的流程如下:

  1. 应用程序使用数据库驱动建立和数据库的 TCP 连接 ;
  2. 用户进行身份验证 ;
  3. 身份验证通过,应用进行读写数据库操作 ;
  4. 操作结束后,关闭 TCP 连接 。

连接池是一个存放数据库连接对象的集合,应用程序在启动时会创建多个数据库连接对象,并将它们放入连接池中。当有客户端请求到达时,应用程序会从连接池中获取一个连接对象来为客户端提供服务。请求处理完成后,客户端会通过调用关闭方法将连接对象归还给连接池。这种设计可以有效地管理数据库连接的分配和释放,提高系统的性能和资源利用率。

JDBC连接池是一种常见的数据库连接管理方式,通过预先创建一组数据库连接对象并放入池中,以供应用程序随时使用。相比于直接频繁创建连接的方式,使用连接池可以提高效率和性能。

以下是使用JDBC连接池的一般流程:

  1. 获取数据源对象:通常使用标准的数据源接口javax.sql.DataSource,其中定义了获取数据库连接的方法。
  2. 从数据源获取连接:通过调用getConnection()方法获取数据库连接对象。
  3. 执行SQL操作:使用获取到的连接对象执行SQL查询或更新操作。
  4. 处理查询结果:对查询结果进行处理,例如遍历结果集并提取数据。
  5. 关闭资源:在完成操作后,需要关闭ResultSet、PreparedStatement和Connection等资源,以释放数据库连接和避免资源泄漏。

常见的JDBC连接池包括HikariCP、C3P0和Druid等。其中,Druid是阿里巴巴开源的数据库连接池库,提供了丰富的连接池管理和监控功能,因此在实际应用中也得到了广泛的应用。

1、配置Druid数据源

DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUsername("yourusername");
dataSource.setPassword("yourpassword");
dataSource.setInitialSize(5); // 初始连接池大小
dataSource.setMinIdle(5); // 最小空闲连接数
dataSource.setMaxActive(20); // 最大活动连接数
dataSource.setValidationQuery("select 1 from dual");  // 心跳的 Query
dataSource.setMaxWait(60000); // 最大等待时间
dataSource.setTestOnBorrow(true); // 验证连接是否有效

2、使用数据库连接

Connection connection = dataSource.getConnection();
//使用连接执行数据库操作
// TODO 业务操作
// 使用后关闭连接连接
connection.close();

3、关闭数据源

dataSource.close();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值