c3p0和dbcp的使用和区别
数据库连接
一、spring配置文件引入
<!-- 配置dbcp数据源 --><bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><!-- 池启动时创建的连接数量 --><property name="initialSize" value="5"/><!-- 同一时间可以从池分配的最多连接数量。设置为0时表示无限制。 --><property name="maxActive" value="30"/><!-- 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。 --><property name="maxIdle" value="20"/><!-- 在不新建连接的条件下,池中保持空闲的最少连接数。 --><property name="minIdle" value="3"/><!-- 设置自动回收超时连接 --> <property name="removeAbandoned" value="true" /><!-- 自动回收超时时间(以秒数为单位) --> <property name="removeAbandonedTimeout" value="200"/><!-- 设置在自动回收超时连接的时候打印连接的超时错误 --> <property name="logAbandoned" value="true"/><!-- 等待超时以毫秒为单位,在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。设置为-1表示无限等待。 --> <property name="maxWait" value="100"/> </bean><!-- 配置c3p0数据源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="jdbcUrl" value="${jdbc.url}" /><property name="driverClass" value="${jdbc.driverClassName}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!--连接池中保留的最大连接数。Default: 15 --><property name="maxPoolSize" value="100" /><!--连接池中保留的最小连接数。--><property name="minPoolSize" value="1" /><!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --><property name="initialPoolSize" value="10" /><!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --><property name="maxIdleTime" value="30" /><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --><property name="acquireIncrement" value="5" /><!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0--><property name="maxStatements" value="0" /><!--每60秒检查所有连接池中的空闲连接。Default: 0 --><property name="idleConnectionTestPeriod" value="60" /><!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --><property name="acquireRetryAttempts" value="30" /><!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false--><property name="breakAfterAcquireFailure" value="true" /><!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。Default: false --><property name="testConnectionOnCheckout" value="false" /> </bean>
二、介绍
1、c3p0
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
2、dbcp简介:
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
三、c3p0与dbcp区别:
dbcp没有自动的去回收空闲连接的功能 c3p0有自动回收空闲连接功能
两者主要是对数据连接的处理方式不同!C3P0提供最大空闲时间,DBCP提供最大连接数。
前者当连接超过最大空闲连接时间时,当前连接就会被断掉。DBCP当连接数超过最大连接数时,所有连接都会被断开。
dbcp它的原理是维护多个连接对象Connection,在web项目要连接数据库时直接使用它维护的对象进行连接,省去每次都要创建连接对象的麻烦。提高效率和减少内存使用。
s3p0可以自动回收连接,dbcp需要自己手动释放资源返回。不过dbcp效率比较高。
c3p0 | dbcp | |
对数据连接的处理方式 | 提供最大空闲时间 | 提供最大连接数 |
什么时候连接挂断 | 当连接超过最大空闲连接时间时 | 当连接数超过最大连接数时 |
连接资源是否释放 | 自动回收连接 | 需要自己手动释放资源 |
效率 | 效率比较高() | |
原理 |
维护多个连接对象Connection,在web项目要连接数据 库时直接使用它维护的对象进行连接,省去每次都要创 建连接对象的麻烦。提高效率和减少内存使用 |
|
推荐使用 | hibernate开发 | spring开发 |
c3p0和dbcp的使用和区别相关推荐
- c3p0连接池与dbcp连接池的区别
c3p0连接池与dbcp连接池的区别: c3p0有自动回收空闲连接的功能: dbcp没有自动回收空闲连接的功能: c3p0提供最大空闲时间,超时则断开当前连接: dbcp提供最大连接数,超过最大连接数 ...
- c3p0与dbcp的异同
1.定义 C3P0:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. dbcp : ...
- java dbcp c3p0_c3p0与dbcp的作用与区别,及使用!
一:c3p0简介及作用: c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它开源项目有Hibernate,Spring.是一个后缀名 ...
- c3p0、dbcp、druid三大连接池对比
转: c3p0.dbcp.druid三大连接池对比 转载于:https://www.cnblogs.com/littlelazy/p/10480552.html
- c3p0,DBCP,Druid(德鲁伊)数据库连接池
c3p0,DBCP,Druid(德鲁伊)数据库连接池 每博一文案 佛说:前世 500 次的回眸,才换来今生的一次擦肩而过. 人与人之间的缘分,真的无需强求,并不是所有的感情都能天长地久,正如<越 ...
- 配置Spring数据源c3p0与dbcp
2019独角兽企业重金招聘Python工程师标准>>> 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般 ...
- C3P0 与 DBCP 数据库连接池使用和比较
博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/ ...
- 数据库连接池dbcp和c3po的区别
1 DBCP DBCP是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件. 2.C3P0 是一个开放源代码的JDBC连接池,它在lib目录中与Hibernat ...
- 1.DBCP和CP30的区别
https://www.cnblogs.com/haogeBlogs/p/5856302.html 转载于:https://www.cnblogs.com/Each-Person-Got-a-Drea ...
最新文章
- 在决策树类相关算法中,一个接点的基尼系数通常是大于还是小于他的父节点?是总是大于还是总是小于?
- python正态分布随机数_Python使用numpy产生正态分布随机数的向量或矩阵操作示例...
- C++ leetCode 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个
- 【问题解决】老外ESP32TTS语音合成库AquesTalk ESP32测试成功
- 为什么torch.nn.Linear的表达形式为y=xA^T+b而不是常见的y=Ax+b?
- (软件工程复习核心重点)第十二章软件项目管理习题
- intouch负值显示0_excel表格数据为负值取0-在EXCEL表格中怎么把负数显示为0?公式怎么设置?...
- java编程——【Mybatis】之${}和#{}的区别
- python如何将天数转换为日期字符串
- 设计模式(1):工厂模式
- vue实现codemirror代码编辑器中的SQL代码格式化功能
- JVM之类的加载与类加载器
- unity aspon word excel ppt pdf转图片
- word转html在前端页面显示
- 机器学习之随机森林算法
- c语言-查找字符串子串(类似strstr()函数)
- 【论文笔记】Heterogeneous Transfer Learning for HSIC Based on CNN
- CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧
- 速腾雷达录包方法(32线)
- 工业元宇宙三人行系列直播活动第五场在北京举办