一.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的更多相关文章

  1. 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)

    -----------------------JDBC---------- 0.      db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...

  2. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...

  3. JDBC连接池&DBUtils使用

    使用连接池改造JDBC的工具类: 1.1.1          需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...

  4. 数据库 ----jdbc连接池的弊端

    jdbc连接池的弊端 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能.设想:使用数据库连接池管理数据库连接.2.将sql语句硬编码到 ...

  5. 简易版JDBC连接池

    JDBC连接池mini版的实现 首先是工具类 DbUtil 主要参数就是Driver.User.PWD等啦,主要用于建立连接 URL需要注意的是SSL和serverTimezone参数,和mysql驱 ...

  6. 四大流行的jdbc连接池之C3P0篇

    C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...

  7. Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介

    日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...

  8. JDBC连接池-C池3P0连接

    JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版      c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池  三种方 ...

  9. JDBC连接池(三)DBCP连接池

    JDBC连接池(三)DBCP连接池 在前面的随笔中提到 了  1.JDBC自定义连接池  2. C3P0连接池 今天将介绍DBCP连接池 第一步要导入jar包   (注意:mysql和mysql 驱动 ...

随机推荐

  1. ClusterControl docker 环境搭建

    ClusterControl 是一款比较强大的数据库管理平台,包含了丰富的数据库管理功能. 我们可以用来方便的进行数据管理 测试使用docker-compose 管理 环境准备 docker-comp ...

  2. C#模拟键盘按键的三种方式实现

    1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...

  3. 利用express托管静态文件

    通过express内置的express.static可以方便的托管静态文件,例如图片.css.javascript文件等. 将静态资源文件所在的目录作为参数传递给express.static中间件就可 ...

  4. HTTP redirect 重定向到 HTTPS

    最近帮一个顾客做网站,  需要HTTPS. 之前接触的SSL certificate直接上传到plesk 上面勾选重定向即可. 在此先吐槽下godaddy 服务贵功能还少. 用代码从HTTP来重定向到 ...

  5. 晒一晒Jenkins那些常用插件

      Jenkins插件大师 作为CI/CD的调度中心,Jenkins具有十八般武艺,目前已有1700多个插件,功能强大到似乎有点过分了.本文主要列出平时我们常用的插件. 以下这两个网站是Jenkins ...

  6. LambdaAOP

    项目地址 :  https://github.com/kelin-xycs/LambdaAOP LambdaAOP 一个 用 C# 实现的 使用 Lambda 表达式 的 AOP 这是 一个 用 C# ...

  7. revit api 实现过滤墙图元并选中

    public IList<Element> findElementsByCategory(Autodesk.Revit.UI.UIApplication aApp, Document aD ...

  8. koa 学习资料

    koa 学习资料 学习资料 地址 koa 中文版 https://koa.bootcss.com/

  9. C# 结构和类

    不同点: 1.结构是值类型,而类是引用类型:2.结构不支持继承,而类支持继承:3.结构不能定义构造函数,编译器会定义. 适用场合: 结构:分配内存快,作用域结束即被删除,不需要垃圾回收,适用于小型数据 ...

  10. JAVAFX开发桌面应用

    javafx中文版文档: http://www.yiibai.com/javafx/ JavaFX之FXController详解 JavaFx系列教程 含打包部署 javafx之两种局部界面的呈现方式 ...