博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java数据库连接池
阅读量:3679 次
发布时间:2019-05-21

本文共 2775 字,大约阅读时间需要 9 分钟。

编写标准的数据源(规范)

Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!

常见的第三方连接池如下:

  • C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0是异步操作的,所以一些操作时间过长的JDBC通过其它的辅助线程完成。目前使用它的开源项目有Hibernate,Spring等。C3P0有自动回收空闲连接功能
  • 阿里巴巴-德鲁伊druid连接池:Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求。
  • DBCP(DataBase Connection Pool)数据库连接池,是Apache上的一个Java连接池项目,也是Tomcat使用的连接池组件。dbcp没有自动回收空闲连接的功能。

C3P0连接池

使用步骤

  1. 导入c3p0-0.9.1.2.jar
  2. 拷贝配置文件到src目录
  3. 创建连接池(配置文件自动读取的)
  • 编写配置文件 c3p0-config.xml
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/day19
root
root
5

c3p0连接池常用的配置参数:

参数 说明
initialPoolSize 初始连接数
maxPoolSize 最大连接数
checkoutTimeout 最大等待时间
maxIdleTime 最大空闲回收时间

初始连接数:刚创建好连接池的时候准备的连接数量

最大连接数:连接池中最多可以放多少个连接
最大等待时间:连接池中没有连接时最长等待时间
最大空闲回收时间:连接池中的空闲连接多久没有使用就会回收

编写Java代码

/** * C3P0连接池的工具类 * */public class C3P0Utils {
//1. 创建一个C3P0的连接池对象(会自动读取src目录下的c3p0-config.xml,所以不需要我们解析配置文件) public static DataSource ds = new ComboPooledDataSource(); //2. 提供 从连接池中 获取连接对象的方法 public static Connection getConnection() throws SQLException {
Connection conn = ds.getConnection(); return conn; } //3. 提供 获得数据源(连接池对象)的方法 public static DataSource getDataSource(){
return ds; }}

Druid 连接池

Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是国内目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。如:一年一度的双十一活动,每年春运的抢火车票。

Druid的下载地址:

DRUID连接池使用的jar包:druid-1.1.16.jar

Druid连接池工具类编写

步骤:

  1. 导入DRUID jar 包
  2. 拷贝配置文件到src目录
  3. 根据配置文件 创建连接池对象
  4. 从连接池对象获得连接

实现:

创建druid.properties, 放在src目录下

driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/day19username=rootpassword=root

编写Java代码

/** * 阿里巴巴的连接池 Druid 工具类 */public class DruidUtils {
/* 1. 加载 druid.properties 配置文件 2. 创建 Druid 连接池对象 3. 提供 获得 连接池对象的方法 4. 提供 从连接池中 获取连接对象Connection的 方法 */ public static DataSource ds = null; static {
try {
//1. 加载 druid.properties 配置文件 InputStream is = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"); Properties prop = new Properties(); prop.load(is); //2. 创建 Druid 连接池对象 ds = DruidDataSourceFactory.createDataSource(prop); } catch (Exception e) {
e.printStackTrace(); } } /* 3. 提供 获得 连接池对象的方法 */ public static DataSource getDataSource(){
return ds; } /* 4. 提供 从连接池中 获取连接对象Connection的 方法 */ public static Connection getConnetion() throws SQLException {
Connection conn = ds.getConnection(); return conn; }}

转载地址:http://htebn.baihongyu.com/

你可能感兴趣的文章
MySQL 主从复制
查看>>
Jedis 连接 Redis 常见错误
查看>>
Redis中的布隆过滤器
查看>>
Redis 中加入 Redis-Cell 模块,配置文件出错 version `GLIBC_2.18` not found
查看>>
CentOS7 防火墙配置,重启
查看>>
1. Shiro 简介
查看>>
2. Shiro 身份验证
查看>>
3. Shiro 授权
查看>>
Git 版本管理
查看>>
Git 工作区和暂存区
查看>>
MyBatis Plus 3.X 通俗易懂版教程
查看>>
Java 实现冒泡排序
查看>>
JMeter 工具安装、环境配置、中文设置
查看>>
mysql 遇到此问题解决办法:Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggre
查看>>
多线程之线程礼让
查看>>
IDEA创建类的同时自动添加类注解
查看>>
多线程之守护线程
查看>>
多线程之Lock锁
查看>>
多线程之线程池
查看>>
Java中的注解
查看>>