• 首先,什么是c3p0?下面是百度百科的解释:

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring

  •   使用连接池和我们平时写的JDBC代码相比较有什么优点呢?
  • 资源重用:

由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性。

  • 更快的系统反应速度:

数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于连接池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而减少了系统的响应时间。

  • 新的资源分配手段:

对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接池的配置,实现某一应用最大可用数据库连接数的限制,避免某一应用独占所有的数据库资源。

  • 统一的连接管理,避免数据库连接泄露:

在较为完善的数据库连接池实现中,可根据预先的占用超时设定,强制回收被占用连接,从而避免了常规数据库连接操作中可能出现的资源泄露。

如何在自己的项目中使用c3p0呢?

  1. 导jar包:
  2. 两种方式可以建立c3p0连接,第一种方式是代码方式,Demo如下:
    package com.wang.utils;import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JDBCutils {private static Connection conn;private static ComboPooledDataSource ds = new ComboPooledDataSource();public static Connection getConnection() {try {ds.setDriverClass("com.mysql.jdbc.Driver");ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=256&rewriteBatchedStatements=true");ds.setUser("root");ds.setPassword("123");conn = ds.getConnection();} catch (SQLException e) {e.printStackTrace();} catch (PropertyVetoException e) {            e.printStackTrace();}return conn;}

    第二种是使用读取配置文件的方式,要求是,配置文件必须命名为c3p0-config.xml,并且放在src目录下,配置文件如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <c3p0-config><default-config> <property name="jdbcUrl"><![CDATA[jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=256&rewriteBatchedStatements=true]]></property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="user">root</property><property name="password">123</property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --><property name="acquireIncrement">3</property><!-- 初始化数据库连接池时连接的数量 --><property name="initialPoolSize">10</property><!-- 数据库连接池中的最小的数据库连接数 --><property name="minPoolSize">2</property><!-- 数据库连接池中的最大的数据库连接数 --><property name="maxPoolSize">10</property></default-config>
    </c3p0-config>

    java代码部分:

    package com.wang.utils;import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JDBCutils {private static Connection conn;private static ComboPooledDataSource ds = new ComboPooledDataSource();public static Connection getConnection() {try {conn = ds.getConnection();} catch (SQLException e) {e.printStackTrace();} catch (PropertyVetoException e) {e.printStackTrace();}return conn;}

    注意,配置文件里可以写多个数据库配置,上面的配置文件代码,我们是放在default-config标签下,可以再添加一个用<named-config name="mysqlConfig">标签修饰的配置,只需要在代码中,将name的值,放在new ComboPooledDataSource("mysqlConfig")中即可,

c3p0数据库连接池的使用详解相关推荐

  1. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  2. c3p0连接池配置参数详解

    <c3p0-config>   <default-config>  <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 -->   ...

  3. basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中"获得连接"或"释放资源 ...

  4. Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等

    MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...

  5. c3p0 数据库连接池

    C3P0连接池 c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.c3p0一般是与Hibernate,Spring等框架一块使用的,当然也可以 ...

  6. 关于Tomcat与MySQL连接池问题的详解

    转载自   关于Tomcat与MySQL连接池问题的详解 研究了一天,终于有所收获,希望对大家有所帮助.首先请大家注意:这里尤其讨论Tomcat5.5版本中遇到的问题,为什么尤其单对这个版本,我一会儿 ...

  7. python整数池_对Python中小整数对象池和大整数对象池的使用详解

    1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...

  8. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 并发编程五:java并发线程池底层原理详解和源码分析

    文章目录 java并发线程池底层原理详解和源码分析 线程和线程池性能对比 Executors创建的三种线程池分析 自定义线程池分析 线程池源码分析 继承关系 ThreadPoolExecutor源码分 ...

最新文章

  1. 美媒评2018年全球十大突破性技术:AI和人工胚胎上榜
  2. kcf 脊回归 范数
  3. WebRTCon 2018 Day One精彩回顾
  4. 《Spring2.0 技术手册》读书笔记五-与Spring容器的交互(2)
  5. stm32温度控制按键_干货 | STM32常用功能介绍
  6. 7.1 定义关键指标KPI
  7. JAVA循环与分支语句edu_Java分支结构和循环结构原理与用法详解
  8. HTML5 Canvas游戏开发实战 PDF扫描版
  9. 类的概念、成员函数的定义方式、类的访问控制和封装、类的大小、this指针
  10. Swagger 注解~用于模型
  11. python中提取pdf文件某些页_付费?是不可能的!处理 PDF 只需几行代码,彻底解放双手!...
  12. ssh框架原理及工作流程
  13. 学python数据分析心得体会800字_一点学习大数据分析的心得体会
  14. ​以太网的发展历史、演化过程以及工作基理
  15. 学习如何搭建SpringBoot框架
  16. java逆向_Java逆向入门(一)
  17. C#实现手机发送验证码
  18. <i> vs <em> vs <cite>
  19. 高通CPU处理器解析
  20. docker 设备共享

热门文章

  1. 基于Log4net插件
  2. 硬盘知识大杂烩(四)
  3. JavaScript判断浏览器类型及版本
  4. 数据库的查询,添加,修改,删除
  5. View绘制原理 —— 画在哪?
  6. 可视化-grafana_使用influxDB数据
  7. 20180925-7 规格说明书-吉林市2日游
  8. 手机测试用例-设置测试用例
  9. OpenGL ES3 非常好的系列文章
  10. 使用sumlime text有感