开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍.

java程序与数据库数据交互的步骤

1. 首先需要与数据库建立连接, 即完成驱动注册.

2. 导入c3p0和Druid的jar包, 编写工具类JDBCUtils.

3. 导入JdbcTemplate的jar包, 使用JdbcTemplate创建的对象完成数据交互.

c3p0连接池技术

c3p0的配置文件

c3p0技术编写工具类JDBCUtils

c3p0技术创建连接池对象可以直接通过实现接口的DataSource类CombopooledDataSource来实现, 在JDBCUtils类中提供了获取连接池对象, 连接对象以及关闭流资源的公共访问方法.

public class JDBCUtil_c3po {// 创建唯一的一个连接池对象private static DataSource ds = new ComboPooledDataSource();// 获取连接池对象的方法public static DataSource getDataSource(){return ds;}// 获取连接对象的方法public static Connection getConnection() throws SQLException {return ds.getConnection();}// 关闭流资源public static void close(ResultSet rs, Connection conn, Statement...stmts){if (rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (stmts != null && stmts.length != 0){for (Statement stmt : stmts) {if (stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}}}if (conn != null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

阿里巴巴的Druid技术

Druid技术

Druid的配置文件使用的是properties文件, 所以说配置上比较简单;  而c3p0技术配置文件使用的是xml文件, 虽然看起来比较复杂, 但是xml文件可以实现更多的逻辑判断, 并且可以添加一些约束条件, 所以说比较正规的软件往往使用xml文件作为配置文件.

Druid技术编写工具类JDBCUtils

使用Druid技术完成工具类JDBCUtils的编写, 配置文件druid.properties是需要自己加载的, 然后调用DruidDataSourceFactory中的方法createDataSource方法创建连接池对象, 至于后面提供获取连接池对象, 连接对象以及关闭流资源的公共访问方法和c3p0技术是一样的.

public class JDBCUtils {// 1.获取一个唯一的连接池对象,private static DataSource ds;// 2. 通过动态代码块完成对连接池对象的赋值static{try {// 2.1 创建Properties对象, 用于读取Druid技术连接池对象的配置文件Properties pro = new Properties();// 2.2 通过类加载器, 加载配置文件pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));// 2.3 对连接池对象进行赋值ds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}// 获取连接池对象的方法public static DataSource getDataSource(){return ds;}// 获取连接对象的方法public static Connection getConnection() throws SQLException {return ds.getConnection();}// 关闭流资源的方法public static void close(ResultSet rs, Connection conn, Statement...stmts){if (rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (stmts != null && stmts.length != 0){for (Statement stmt : stmts) {if (stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}}}if (conn != null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

以上是个人在使用c3p0技术和Druid技术创建连接池对象时总结的差异, 供交流学习.

c3p0连接池技术和Druid连接池技术比较相关推荐

  1. java druid mysql连接池_java使用Druid连接池连接mysql

    1.先在mysql创建需要的数据库和表 use book; create table t_user( `id`intprimary key auto_increment, `username` var ...

  2. druid连接池mysql5.7_MySQL Druid连接池,Apache的DbUtils使用

    一.Druid连接池在程序初始化时,预先创建指定数量的数据库连接对象存储在池中. 当需要连接数据库时,从连接池中取出现有连接: 使用完毕后, 也不会进行关闭,而是放回池中,实现复用,节省资源. 1.1 ...

  3. spring boot socket长连接_springboot 整合阿里 druid 数据库连接池实战

    情景 web 开发中连接数据库基本是必须的,阿里的 druid 是一款非常优秀的开源数据库连接池工具. 本文将介绍一下如何使用 springboot 整合 druid 数据源. 快速开始 maven ...

  4. druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库

    一.连接池 在普通的数据库访问程序中,客户程序得到的连接对象是物理连接,调用连接对象的close()方法将关闭连接,而采用连接池技术,客户程序得到的连接对象是连接池中物理连接的一个句柄,调用连接对象的 ...

  5. 应用使用Druid连接池经常性断链问题分析

    前段时间有应用使用Druid连接池经常的提示断链报错,整个问题排查分析过程很有意思.这里将Druid连接池.数据库层以及负载均衡层的配置分析下,记录整个问题的分析过程,同时梳理下Druid连接池的配置 ...

  6. JDBCC3P0连接池Druid连接池

    typora-root-url: img typora-copy-images-to: img JDBC&连接池 回顾 会使用mysql字符串函数 CONCAT: 连接字符串 CHAR_LEN ...

  7. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

  8. 【SpringBoot 2学习笔记】《九》SpringBoot2数据库访问之Druid连接池

    为什么要使用数据库连接池 不使用数据库连接池: 对于并发量大的网站,会导致以下问题: 每一次web请求都要建立一次数据库连接,在同样的步骤下重复占用系统资源 不能控制被创建的连接对象数,系统资源会被毫 ...

  9. java阿里数据库连接池_Java学习:数据库连接池技术

    本节内容 数据库连接池 Spring JDBC : JDBC Template 数据库连接池 1.概念:其实就是一个容器(集合),存放数据库连接的容器 当系统初始化好后,容器中会申请一些连接对象,当用 ...

最新文章

  1. python程序如何执行死刑图片_如何判断对象已死
  2. javascript的知识总结
  3. Go在招聘中最吃香、安全工程师薪资涨幅最高 | Hired年度软件工程师报告出炉
  4. WINCE 按键驱动编写
  5. boost::container模块实现默认初始化的程序
  6. ALGO-1 区间k大数查询
  7. centos7上配置Samba服务器完成与windows的文件共享
  8. Java 头像剪切及上传服务器JSP 笔记
  9. 7.15 HTMl + CSS 笔记整理(一)
  10. cmake编译gtest测试程序(三)
  11. spark入门Intellj环境配置scalark入门Intellj环境配置scala
  12. laravel connector.php,如何获得laravel DB连接到PHP连接?
  13. 极速office(word)如何在方框内打钩
  14. 计算机专业的梦想作文,我的梦想作文300字(通用15篇)
  15. python的logo的代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
  16. 总结一下2010--2011初看的书
  17. 常用字符串函数的使用
  18. MongoDB数据库的简介与安装步骤
  19. ppt学习07——动画
  20. 【泛函分析】Thomae function

热门文章

  1. 免编程配置NFC读卡器输出格式
  2. 关于学习密码学知识的一些基础知识( trapdoor function)
  3. Java基础:Java中四种访问修饰符
  4. HTML5 之 Button 标签
  5. 学会这个技能,也许你也能月薪过万!
  6. 用C++ RAII思想写windows驱动
  7. 笔记本电池的保养方法 如何正确使用及保护笔记本电池
  8. python发送qq邮件失败_Python实现给qq邮箱发送邮件的方法
  9. 生活社区如何提供便民服务?手把手教你
  10. IP地址和子网掩码推算网络号,主机号,网络地址,广播地址,地址范围及主机数