一.什么是JDBC连接池

概念:存放数据库连接的一个容器(集合)Connection

当系统运行起来之后,这个连接池就被创建,在这个连接池当中,会申请一些对象,当有用户来访问数据库的时候,就从这个连接池当中获取连接对象,用户访问结束之后,连接池对象会归还给容器

二.为什么要用JDBC连接池

普通的JDBC数据库连接(Connectiond对象)使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间),数据库的连接是比较昂贵的(创建的成本比较大)。

需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很好的重复利用.若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。

三.JDBC连接池的作用

因为建立数据库连接是一个非常耗时、耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去,极大的提高了数据库连接的性能问题,节省了资源和时间。

Java数据库连接JDBC :jdbc就是Java数据库链接,原名Java data base connectivity

四.JDBC连接池的使用

大体上可以分为两类:

一.自定义连接池:

 1.创建一个类实现javax.jdbc.dataSource 类 。2.创建一个 存放多个连接的容器 ,因为需要经常删除 ,查         找  。   这里用LinkedList   容器。3.在MyDataSource类中静态代码块中创建多个连接,添加到连接池容器中  (这里面创建连接可以直接使用 com.jdbc.connection包中的jdbcConnection 中的静态方法getConnection4.重写Datasource 方法中的 getConnection()  方法  5在MyDataSource方法中添加  一个 把当前连接归还给连接池的方法

二.使用开源的数据库连接池

1、JDBC 的数据库连接池使用 javax.sql.DataSource 来表示,DataSource 只是一个接口,该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现,也有一些开源组织提供实现:
1.C3P0

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

c3p0所需jar:c3p0-0.9.2.1.jar mchange-commons-java-0.2.3.4.jar

2.DBCP

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接 池项目,也是 tomcat 使用的连接池组件。
使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

3.Proxool

Proxool是一种Java数据库连接池技术。sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

4.BoneCP

是一个开源组织提供的数据库连接池,速度快。

5.Druid

是阿里提供的数据库连接池,据说是集DBCP 、C3P0 、Proxool优点于一身的数据库连接池,但是速度不确定是否有BoneCP快。

2、DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池

3、DataSource用来取代DriverManager来获取Connection,获取速度快,同时可以大幅度提高数据库访问速度。

以Druid(德鲁伊)数据库连接池作为例子:

import javax.sql.DataSource; import
com.alibaba.druid.pool.DruidDataSourceFactory;public class TestDruid {  public static void main(String[] args)
throws Exception {      Properties pro = new Properties();
pro.load(TestDruid.class.getClassLoader().getResourceAsStream("druid.properties"));DataSource ds = DruidDataSourceFactory.createDataSource(pro);Connection conn = ds.getConnection();       System.out.println(conn);   }
} ```

src下的配置文件为:(druid.properties):

url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
username=root password=123456 driverClassName=com.mysql.jdbc.DriverinitialSize=10 maxActive=20 maxWait=1000 filters=wall ```

学习笔记(1):JDBC连接池相关推荐

  1. mysql连接池永驻_【学习笔记】Oracle连接池 数据库常驻连接池(Database Resident Connection Pool)案例介绍...

    天萃荷净 分享一篇关于应用程序与Oracle数据库连接的连接方法介绍,数据库常驻连接池(Database Resident Connection Pool)案例介绍 一.介绍常驻连接池(Databas ...

  2. 在独立Java应用程序中使用Tomcat JDBC连接池

    这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...

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

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

  4. jdbc封装mysql_用Java手动封装JDBC连接池(一)

    JDBC存在的问题 代码的冗余:在对数据库进行增删改查时,每个操作的JDBC流程和SQL执行代码的流程都一样,造成代码的冗余,所以我们可以把冗余的部分封装起来,封装之后,我们就不用再去写JDBC流程, ...

  5. HikariCP 高性能的 JDBC 连接池

    HikariCP 是一个高性能的 JDBC 连接池组件.下图是性能的比较测试结果: 使用方法: HikariConfig config = new HikariConfig(); config.set ...

  6. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中"获得连接"或"释放资源"是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况 ...

  7. 深度学习笔记(25) 池化层

    深度学习笔记(25) 池化层 1. max pooling 2. mean pooling 3. pooling 超参 1. max pooling 除了卷积层,卷积网络也经常使用池化层来缩减模型的大 ...

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

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

  9. jdbc连接池工作原理_JDBC连接实际上如何工作?

    jdbc连接池工作原理 The JDBC Connection interface is a part of java.sql package. The java.sql.Connection int ...

  10. JDBC、封装JDBC连接池、第三方连接池工具

    主要内容: JDBC简介 JDBC来源 通过代码实现JDBC JDBC的改进需求 JDBC改进的代码实现 JDBC使用的设计模式 封装连接池 封装JDBC连接池 ThreadLoacl的使用 Thre ...

最新文章

  1. 管理索引表:深入研究B树索引--重建,合并,删除(理论篇3)
  2. 利用css对shiny页面优化及利用htmlwidgets包创建HTML控件
  3. 使用带有用户名和密码的cURL?
  4. A/B测试:概念 ≠ 执行
  5. 2015年10月5日 正式启用该博客
  6. pip install -r requirement.txt 后 提示No such file or directory: ‘requirements.txt‘
  7. 【Nginx】截取URL中某个参数Parameter
  8. 【深入理解JVM】JVM内存模型
  9. 利用相机SDK采相转换至HImage
  10. 被百度AI官方认证的大学,到底是什么水平
  11. 【JavaScript算法】---快速排序法
  12. AsyncTask更新UI线程的基本原理
  13. CMake简介及使用实例
  14. hdu4734 F(x)
  15. linux用vim编辑后保存显示错误,因为vim编辑文档未保存。再次编辑同一个文件时出现报错的解决...
  16. Navicat premium11 一键破解 无需注册码
  17. Broken Auth and session mgmt
  18. Hrbust 1865 人类希望——kokoII【记忆化搜索】
  19. 基于pygame 图片多边形坐标获取
  20. 复选框至少选择一项_如果没有设计师,您至少要选98种材料,学会35项工艺!...

热门文章

  1. matlab的控制系统仿真,MATLAB控制系统仿真教程
  2. 蓝鲸ERP标准版-进销存-采购管理子系统操作说明1
  3. javascript电子书下载
  4. 模糊图像退化与去模糊的数学模型
  5. 又一起“删库”跑路:链家程序员怒删公司 9TB 数据,被判 7 年!网友:真惨~...
  6. Struts2学习笔记(4)-ActionSupport类及Action接口详解
  7. 联想服务器怎么备份系统软件,联想笔记本通过命令进行系统备份的教程
  8. 关于联想键盘,如何去除fn 键 联想官方解决方法
  9. android游戏开发的架构
  10. linux安装搜狗错误,centos安装sogou出错