文章目录

  • 一、数据库连接池技术
  • 二、多种开源的数据库连接池

一、数据库连接池技术

1.数据库连接池的基本思想
就是为数据库连接建立一个"缓冲池"。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从"缓冲池"中取出一个,使用完毕之后再放回去。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

2.数据库连接池的优点
资源重用、更快的系统反应速度、新的资源分配手段、统一的连接管理,避免数据库连接泄露
3.数据库连接池的设置:
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

二、多种开源的数据库连接池

JDBC的数据库连接池使用javax.sql.DataSource 来表示,DataSource只是一个接口,该接口通常由服务器(Weblogic, WebSphere,Tomcat)提供实现,也有一些开源组织提供实现︰
(1)dbcp:是Apache提供的数据库连接池。tomcat服务器自带dbcp数据库连接池。速度相对C3P0较快,但因自身存在BUG,Hibernate3已不再提供支持。
(2)c3p0:是一个开源组织提供的一个数据库连接池,速度相对较慢,稳定性较好(hibernate官方推荐使用)
(3)Proxool:是sourceforge下的一个开源项目数据库连接池,有监控连接池状态的功能,稳定性较c3p0差一点
(4)BoneCP:是一个开源组织提供的数据库连接池,速度快
(5)Druid:是阿里提供的数据库连接池,据说是集DBCP、C3P0、Proxool 优点于一身的数据库连接池,但是速度不确定是否有BoneCP快

DataSource通常被称为数据源,它包含连接池连接池管理两个部分,习惯上也经常把DataSource称为连接池,DataSource用来取代DriverManager来获取Connection,获取速度快,同时可以大幅度提高数据库访问速度。

1.c3p0数据库连接池

/*** c3p0数据库连接池的使用* @author wds* @date 2021-12-14 16:38*/
public class C3P0Test {//方式1@Testpublic void getConnectionTest() throws Exception {//获取C3P0数据库连接池ComboPooledDataSource cpds = new ComboPooledDataSource();cpds.setDriverClass("com.mysql.cj.jdbc.Driver" ); //loads the jdbc drivercpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test" );cpds.setUser("root");cpds.setPassword("12345678");//设置初始时数据库连接池中的连接数cpds.setInitialPoolSize(10);Connection connect = cpds.getConnection();System.out.println(connect);//销毁C3p0连接池DataSources.destroy(cpds);}//方式2:使用配置文件实现数据库连接池c3p0技术(使用较多)@Testpublic void getConnectionTest01() throws SQLException {ComboPooledDataSource cpds = new ComboPooledDataSource("helloc3p0");Connection connect = cpds.getConnection();System.out.println(connect);}
}

配置文件:c3p0-config.xml

<?xml version="1.0" encoding="utf-8" ?>
<c3p0-config><!-- This app is massive! --><named-config name="helloc3p0"><!-- 获取数据库连接池的四个基本信息 --><property name="driverClass">com.mysql.cj.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property><property name="user">root</property><property name="password">12345678</property><!-- 数据库连接池的基本管理信息 --><!-- 当数据库连接池中的连接数不够时,c3p0一次向数据库连接池中申请的连接数 --><property name="acquireIncrement">5</property><!-- c3p0数据库连接池中的初始化连接数 --><property name="initialPoolSize">10</property><!--c3p0数据库连接池中最小的连接数--><property name="minPoolSize">10</property><!--c3p0数据库连接池中最大的连接数--><property name="maxPoolSize">100</property><!--c3p0数据库连接池中最多维护的Statement的个数--><property name="maxStatement">50</property><!--c3p0数据库连接池中最多使用的Statement的个数--><property name="maxStatementPerConnection">2</property></named-config>
</c3p0-config>

连接成功:

2.dbcp数据库连接池

/*** dbcp数据库连接池的使用* @author wds* @date 2021-12-14 17:49*/
public class DbcpTest {//方式1:@Testpublic void getConnectionTest() throws SQLException {//创建dbcp的数据库连接池BasicDataSource dataSource = new BasicDataSource();//设置基本信息dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/test");dataSource.setUsername("root");dataSource.setPassword("12345678");//设置数据库连接池的其他属性dataSource.setInitialSize(10);dataSource.setMaxActive(10);Connection connect = dataSource.getConnection();System.out.println(connect);}//方式2:使用配置文件@Testpublic void getConnectionTest01() throws Exception {Properties pros = new Properties();
//        //方式1:使用系统的加载器
//        InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp.properties");//方式2:使用FileInputStream fileInputStream = new FileInputStream(new File("E:\\java\\JDBC\\day02_jdbc\\src\\dbcp.properties"));pros.load(fileInputStream);DataSource dataSource = BasicDataSourceFactory.createDataSource(pros);Connection connect = dataSource.getConnection();System.out.println(connect);}
}

配置文件: dbcp.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=12345678

连接成功:

【JDBC】数据库连接池技术相关推荐

  1. 基于JDBC的数据库连接池技术研究与应用

    引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的3层开 ...

  2. jndi mysql数据库_数据库连接池技术中dbcp、c3p0、jndi

    数据库连接池技术中dbcp.c3p0.jndi 发布时间:2020-05-26 08:52:33 来源:51CTO 阅读:371 作者:ikilun 不管通过何种持久化技术,都必须通过数据连接访问数据 ...

  3. 数据库连接池技术详解【吐血整理,疯狂推荐】

    前言 今天来讲一下数据库连接池技术.其实这个名词也就是听起来高大上一点,实际上并不是很复杂的内容,相信在我的讲解下,并且自己实际的将代码写一遍之后,能够对这项技术有较为深刻的理解.废话不多说,开始讲解 ...

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

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

  5. Java jdbc数据库连接池

    1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的 ...

  6. 数据库连接池及C3P0数据库连接池技术

    数据库连接池(重要) 注意数据库连接池只是简化获得数据库连接对象和关流的部门 1.数据库连接池: 1.概念: 其实就是一个容器(在Java中就是集合),存在数据库连接的容器,当系统初始化好后,容器被创 ...

  7. JBDC数据库连接池技术(学习笔记)

    1 JDBC数据库连接池的必要性 传统模式下开发web程序: 先建立数据库连接 sql的基本操作 断开连接 这种模式下的弊端: 1 JDBC数据库连接使用 DriverManager 来获取 2 Co ...

  8. JDBC——数据库连接池

    目录 前言 一.为什么要使用数据库连接池 二.数据库连接池 2.1 优点 三.多种开源数据库连接池 3.1 C3P0数据库连接池 3.2 DBCP连接池 3.3 Druid(德鲁伊)数据库连接池 总结 ...

  9. 数据库连接池——C3P0:数据库连接池技术

    数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接 ...

最新文章

  1. 接口限流算法:漏桶算法令牌桶算法
  2. 扩增子文献笔记2拟南芥根微生物组的结构和组成
  3. nginx添加stream模块1.20
  4. selenium 定制启动 chrome 的选项
  5. Oracle数据库无法启动解决方法
  6. c# char unsigned_dll 中含有unsigned char数组,被C#调用 -
  7. Fedora相关(一)
  8. 如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)
  9. 一张图搞懂容器所有操作 - 每天5分钟玩转 Docker 容器技术(26)
  10. C#给字符串赋予字面值——字符串插入、转义序列的使用
  11. python结巴分词下载_jieba: 结巴中文分词做最好的Python分词组件
  12. java复制pdf_java – 使用iText复制带注释的PDF
  13. 汇川技术小型PLC梯形图编程系列教程(1)小型PLC型号H123U简介
  14. 静态RAM读时序分析
  15. Win10 VC++运行库集合|VC++ 2005 2008 2010 2012 2015
  16. 学习笔记之MIB相关
  17. 求每个月的最后一天日期
  18. workers.properties配置详解
  19. IKAnalyzer总结
  20. Centos 7 x64 搭建文件服务器HFS

热门文章

  1. 九月腾讯,创新工场,淘宝等公司最新面试三十题(第171-200题)
  2. 【渝粤题库】陕西师范大学163205 旅游市场分析与预测
  3. javascript 补全字符串的几种方法
  4. 信用卡使用时的6点,第六点认真看一下
  5. 我肚子好饿 早知道不学java了_肚子好饿的说说心情短语
  6. iOSnbsp;nbsp;常用代码
  7. 称坐顺风车出事故 乘客诉“嘀嗒出行”索赔3.7万元
  8. c语言编程实例解析精粹,C语言实例解析精粹学习笔记——35(报数游戏)
  9. 贝叶斯理论中的prior, likelihood, posterior即先验概率,似然,后验概率
  10. ICPCCamp2017 Day 4 A The Catcher in the Rye(二分+光的折射定律)