jdbc连接池&改进dbUtil成C3P0Util
一.jdbc连接池
1.连接池的存在理由
前面介绍的dbUtils工具类虽然实现了一个对jdbc的简单封装。但它依旧采取从驱动管理获取连接
(DriverManager.getConnection(dbUrl, dbUserName, dbPassword)),释放连接的操作。非常消耗系统的资源!
可以设计一个连接池,来获取con或者存放con

而归还连接的方式不是直接close(),而是返回到连接池
2.自定义一个连接池
1.sun公司提供了一个连接池的接口(java.sql.dataSourse)
2.自定义一个连接池,实现该接口
3.定义一个List集合存放多个连接,从集合中存取(考虑到频繁的存取,用LinkList)
public class MyDataSource implements DataSource{
//1.创建1个容器用于存储Connection对象
private static LinkedList<Connection> pool = new LinkedList<Connection>();
//2.创建5个连接放到容器中去
static{
for (int i = ; i < ; i++) {
Connection conn = DbUtil.getConnection();
pool.add(conn);
}
}
/**
* 重写获取连接的方法
*/
@Override
public Connection getConnection() throws SQLException {
Connection conn = null;
//3.使用前先判断
if(pool.size()==){
//4.池子里面没有,我们再创建一些
for (int i = ; i < ; i++) {
conn = dbUtil.getConnection();
pool.add(conn);
}
}
//5.从池子里面获取一个连接对象Connection
conn = pool.remove();
return conn;
}
/**
* 归还连接对象到连接池中去
*/
public void backConnection(Connection conn){
pool.add(conn);
}
3.常见的开源数据库连接池(C3PO和DBCP,以C3P0为例)
1.导入C3P0连接池所依赖的jar包

2.编写C3PO的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config> <default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///db_</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize"></property>
<property name="maxPoolSize"></property>
</default-config> <named-config name="my">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///db_</property>
<property name="user">root</property>
<property name="password">root</property>
</named-config> </c3p0-config>
3.实现C3P0Util工具类
public class C3P0Utils {
private static ComboPooledDataSource dataSource = new ComboPooledDataSource("my");
public static DataSource getDataSource() {
return dataSource;
}
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
jdbc连接池&改进dbUtil成C3P0Util的更多相关文章
- 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)
-----------------------JDBC---------- 0. db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...
- JDBC连接池和DBUtils
本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...
- JDBC连接池&DBUtils使用
使用连接池改造JDBC的工具类: 1.1.1 需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...
- 数据库 ----jdbc连接池的弊端
jdbc连接池的弊端 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能.设想:使用数据库连接池管理数据库连接.2.将sql语句硬编码到 ...
- 简易版JDBC连接池
JDBC连接池mini版的实现 首先是工具类 DbUtil 主要参数就是Driver.User.PWD等啦,主要用于建立连接 URL需要注意的是SSL和serverTimezone参数,和mysql驱 ...
- 四大流行的jdbc连接池之C3P0篇
C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...
- JDBC连接池-C池3P0连接
JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版 c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池 三种方 ...
- JDBC连接池(三)DBCP连接池
JDBC连接池(三)DBCP连接池 在前面的随笔中提到 了 1.JDBC自定义连接池 2. C3P0连接池 今天将介绍DBCP连接池 第一步要导入jar包 (注意:mysql和mysql 驱动 ...
随机推荐
- Gravitee.io Access Management 组件
Access Management组件在Gravitee.io 主要是进行认证以及权鉴的处理,支持oauth2 以及openid connect 等协议,同时好多功能已经集成在ui 管理界面上了,还是 ...
- 05基于python玩转人工智能最火框架之TensorFlow基础知识
从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...
- 并发运算lib
最近对类似于erlang或者golang的并发运算很感兴趣.以下是看到的相关资料. libgo c++,技术:协程,多线程.这是俺发现的用法最漂亮的c++库,用法参考golang CAF 全称c++ ...
- bind智能DNS + bindUI管理系统
bind UI 管理系统 https://github.com/cucker0/BindUI # bind安装 cd /usr/local/src wget http://ftp.isc.org/is ...
- Zookeeper 三台主机 Ha集群的搭建
前期准备1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 /etc/hosts ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等 ...
- CSS:绝对定位布局案例 position布局实例
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Mac OS安装Windows各版本时注意事项(2014年后的Mac机相信会有这些问题)
2014年后的Mac Mini安装Windows时候,会遇上更种坑,我这几天不断失败及尝试更种版本,各有心得体会,我写下来是为了避免大家遇到像我这种问题. (2014年之前的Mac Mini是否这样, ...
- system.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0) 问题
页面控件没有做限制.提交后还可以继续点击,造成了在短时间内的多次请求.查看日志两次错误在200ms之内. 错误信息 system.Data.Entity.Infrastructure.DbUpdate ...
- IKAnalyzer 添加扩展词库和自定义词
原文链接http://blog.csdn.net/whzhaochao/article/details/50130605 IKanalyzer分词器 IK分词器源码位置 http://git.osch ...
- <亲测>阿里云centos7 挂载数据盘配置
阿里云centos7 挂载数据盘配置 2018年07月17日 15:13:53 阅读数:235更多 个人分类: linux阿里云ECS数据盘挂载 查看磁盘情况 fdisk -l 其中/dev/v ...