连接池

1、连接池概述

用池来管理Connection,这样可以重复使用Connection。有了池,就不需要自己创建连接,只需要通过池来获取Connection对象。当Connection使用完毕后,再讲Connection归还给池。池可以再次利用这个Connection对象。

Java为数据库连接池提供了公共的接口:javax.sql.DataSource。

常见连接池:DBCP、C3P0。

2、DBCP连接池

DBCP是一个开源的连接池,是Apache Common成员之一,是Tomcat内置的连接池。

DataSource:它是java中提供的连接池,作为DriverManager工具的替代项。在DBCP包中提供了DataSource接口的实现类,具体的连接池是BasicDataSource类。

工具类常见配置项

分类 属性 描述
必须项 driverClassName 数据库驱动名称
url 数据库地址
username 用户名
password 密码
可选项 maxActive 最大连接数量
minIdle 最小空闲数量
maxIdle 最大空闲数量
initialSize 初始化连接

 

 

 

 

 

 

 

 

 

 

 

 

 

工具类

复制代码
 1 package datasource;
 2 
 3 import javax.sql.DataSource;
 4 
 5 import org.apache.commons.dbcp.BasicDataSource;
 6 
 7 /**
 8  * <p>Description:连接池工具类 </p>
 9  * @author Administrator
10  * @date 2018年11月6日下午2:05:42
11  */
12 public class JDBCUtils {
13     public static final String DRIVER = "com.mysql.jdbc.Driver";
14     public static final String URL = "jdbc:mysql://localhost:3306/jdbctest";
15     public static final String USERNAME = "root";
16     public static final String PASSWORD = "root";
17     /*
18      * 创建连接池对象
19      */
20     public static BasicDataSource dataSource = new BasicDataSource();
21     // 静态代码块
22     static {
23         // 对连接池进行基本配置
24         dataSource.setDriverClassName(DRIVER);
25         dataSource.setUrl(URL);
26         dataSource.setUsername(USERNAME);
27         dataSource.setPassword(PASSWORD);
28         // 可选配置
29         dataSource.setInitialSize(10);    // 初始化的连接数
30         dataSource.setMaxActive(8);        // 最大连接数量
31         dataSource.setMaxIdle(5);        // 最大空闲数
32         dataSource.setMinIdle(1);        // 最小空闲
33     }
34     /*
35      * 返回连接池对象
36      */
37     public static DataSource getDataSource() {
38         return dataSource;
39     }
40 }
复制代码

工具类使用演示

复制代码
 1 package datasource;
 2 
 3 import java.sql.SQLException;
 4 
 5 import org.apache.commons.dbutils.QueryRunner;
 6 
 7 /**
 8  * <p>Description:使用DBCP获得连接的工具类测试 </p>
 9  * @author Administrator
10  * @date 2018年11月6日下午2:13:43
11  */
12 public class DBCPDemo {
13 
14     public static void main(String[] args) throws SQLException {
15         // 创建sql执行对象
16         QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
17         // sql语句
18         String sql = "update sort set sprice=? where sname=?";
19         // 设置实际参数
20         Object[] params = {80,"算法"};
21         // 执行sql语句
22         int row = qr.update(sql, params);
23         System.out.println(row);
24     }
25 
26 }
复制代码

 

posted @   AlphaJunS  阅读(158)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示