JDBC连接池技术与Druid

由于数据库连接是一种资源,这种资源在使用前必须先创建,而这个创建过程是存在时间和空间的开销的,如果每次在执行数据库访问时都创建连接,并且使用完后要关闭连接,这个过程必然是效率低下的;因此,在实际开发中可以考虑在进行数据库操作前,先提前创建并维护一批数据库连接对象,当需要使用时,从这批对象中获取一个连接,用完之后再返还,从而避免了不必要的时间开销,提高程序的运行效率,这种技术在JDBC中称之为连接池技术(Connection Pool).

目前比较常用的连接池技术包含:

  • apache-DBCP
  • C3P0(Spring/Hibernate框架在使用)
  • Proxool
  • Druid(号称全世界最快的连接池,由alibaba开发)

这里我们分别使用Druid和DBCP连接池:

Druid连接池使用

使用前先导入Druid的依赖:druid-1.1.9.jar

public class DruidPoolDemo {//声明druid连接池的数据源public static DruidDataSource dataSource;static{init();}public static void init(){//创建连接池对象dataSource = new DruidDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mydb"); dataSource.setUsername("root");dataSource.setPassword("123456"); //设置最大连接数dataSource.setMaxActive(10);//CUP*2+1//设置最小的闲置连接数dataSource.setMinIdle(1);//设置初始的连接数dataSource.setInitialSize(2); //最长等待连接时间(MS)dataSource.setMaxWait(10000);}public static synchronized Connection getConn(){//确保连接池是单例if(dataSource == null || dataSource.isClosed()){//重新初始化连接池init();}try {return dataSource.getConnection();} catch (SQLException e) {e.printStackTrace();}return null;}public static void main(String[] args) throws InterruptedException, SQLException {Connection conn1 = getConn();Connection conn2 = getConn();Connection conn3 = getConn();Connection conn4 = getConn();Connection conn5 = getConn();System.out.println(conn1);System.out.println(conn2);System.out.println(conn3);System.out.println(conn4);System.out.println(conn5);Thread.sleep(5000);conn3.close();Connection conn6 = getConn();System.out.println("连接获取--》"+conn6);}
}

DBCP连接池使用(DBCP2)

使用前需导入相关依赖:

public class DBCPPoolDemo {public static BasicDataSource dataSource;static{init();}public static void init(){dataSource = new BasicDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mydb");dataSource.setUsername("root");dataSource.setPassword("123456");//设置初始连接池中的连接数dataSource.setInitialSize(2);//设置最大连接数dataSource.setMaxTotal(5);//设置最小的闲置连接dataSource.setMinIdle(1);//最大等待连接时间dataSource.setMaxWaitMillis(10000);}public static Connection getConn(){if(dataSource == null || dataSource.isClosed()){init();}try {return dataSource.getConnection();} catch (SQLException e) {e.printStackTrace();}return null;}public static void main(String[] args) throws InterruptedException, SQLException {Connection conn1 = getConn();Connection conn2 = getConn();Connection conn3 = getConn();Connection conn4 = getConn();Connection conn5 = getConn();System.out.println(conn1);System.out.println(conn2);System.out.println(conn3);System.out.println(conn4);System.out.println(conn5);Thread.sleep(5000);//回收连接conn3.close();Connection conn6 = getConn();System.out.println(conn6);}
}

JDBC连接池技术与Druid相关推荐

  1. 数据层优化-jdbc连接池简述、druid简介

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

  2. JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

    一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...

  3. c3p0连接池技术和Druid连接池技术比较

    开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍. java程序与数据库数据交互的步骤 1. 首先需要与数据库建立连接, 即完成驱动注册 ...

  4. jdbc如何使用oracle数据库连接池,使用JDBC连接池技术连接Oracle数据库

    在使用JDBC连接数据库要用到两个jar包 1.编写配置文件 #驱动地址 driverClassName=oracle.jdbc.OracleDriver #连接地址 url=jdbc:oracle: ...

  5. 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    网络访问 随着 Oracle, Sybase, SQL Server ,DB2,  Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库,   ...

  6. Druid 德鲁伊连接池技术

    Druid 德鲁伊连接池技术 步骤: 去官网去下载一个德鲁伊的jar -> druid-1.0.9.jar 定义配置文件:使用properties文件类型的,名字随便起 手动加载配置文件信息: ...

  7. JDBC连接池JDBCTemplate课堂笔记

    今日内容 1. 数据库连接池2. Spring JDBC : JDBC Template 数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器.当系统初始化好后,容器被创建,容器中 ...

  8. JDBC、JDBC连接池、JDBCTemplate

    2019独角兽企业重金招聘Python工程师标准>>> JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库* ...

  9. JAVA WEB DAY 11_ JDBC 连接池

    文章目录 JDBC & 连接池 目标 01_ JDBC 概述-[★★] 02_ JDBC 核心 API 概述-[★★] 03_ JDBC 之注册驱动-[★★★] 04_ JDBC 之获取连接对 ...

  10. HikariCP:一个叫光的JDBC连接池

    简介 天不生我李淳罡,剑道万古如长夜. Hikari [hi·ka·'lē] 是日语"光"的意思.HikariCP的卖点是快.简洁.可靠,整体非常轻量,只有130Kb左右. Hik ...

最新文章

  1. python实现简单的用户密码登录控制(输入三次就锁定用户)
  2. Android -- Intent
  3. Unix高级环境编程—进程控制(一)
  4. Joomla!网站扫描工具joomscan
  5. php取指定长度,php截取指定长度的简单示例
  6. linux文件系统挂载磁盘,linux – 无法挂载磁盘(VFS:找不到ext4文件系统)
  7. 需求分析师的基本功:逻辑思维、逻辑分析与逻辑表达
  8. asp(or JSP)与html的不同
  9. elm的 java包_README.md
  10. 计算机网络的分类 ppt,认识计算机网络ppt
  11. iTunes只能装C盘吗_就这一篇:教你真正有效地解决爆满的C盘!
  12. beetl html模板,Beetl模板引擎之自定义html标签
  13. js设计模式的讲解与应用 - 【单例模式】
  14. 一文揭开图机器学习的面纱,你确定不来看看吗
  15. CS5213芯片|HDMI to VGA转换头芯片
  16. 国庆、中秋双节同庆 青岛浮山湾灯光秀启动节日模式
  17. 浮点数和整数的区别python_浮的部首|浮的拼音|浮的组词|浮的意思 - 查字典
  18. 判断dataGridView是否重复值
  19. 微信小程序开发笔记二(WXSS和CSS样式美化)
  20. 让企业订单交期满足率提升3.5倍,新一代APS(高级生产计划与排程系统)是什么样的?

热门文章

  1. 开源字体_开源字体的前5大资源
  2. 计算机科学cs50_世界顶尖CS大学提供500门免费计算机科学课程
  3. 2022短视频去水印小程序源码+支持批量解析
  4. linux tick 函数,Linux上的GetTickCount函数
  5. 黑莓9530完美刷机教程
  6. ug链轮设计软件_教你怎么用UG做链轮教程【UG爱好者首发】
  7. 计算机辅助三维参数化设计是什么,滚子链轮的计算机辅助三维参数化设计.pdf...
  8. 「转」101个著名的心理效应
  9. 计算机病毒正确探讨目录,毕业论文-计算机病毒的正确防御探讨.doc
  10. 程序员们平时常逛的论坛