java代码c3p0连接池配置,c3p0连接池acquireincrement属性配置详解

java代码c3p0连接池配置,c3p0连接池acquireincrement属性配置详解一、c3p0数据库连接池介绍c3p0是应用在Java项目中企业开发中的一个常用的连接池,一般都会配合Java开发框架spring、Hibernate、Mybatis等整合使用,属于开源连接池中性能比较强劲并且受市场比较欢迎的数据库连接池。之所以项目中会应用连接池,主要是因为我们应用JDBC操作数据库时需要创建连接,然后执行完sql语句之后立马就释放连接,用完之后然后释放非常消耗时间,而大部分消耗时…

大家好,又见面了,我是你们的朋友全栈君。

一、c3p0数据库连接池介绍

c3p0是应用在Java项目中企业开发中的一个常用的连接池,一般都会配合Java开发框架spring、Hibernate、Mybatis等整合使用,属于开源连接池中性能比较强劲并且受市场比较欢迎的数据库连接池。

之所以项目中会应用连接池,主要是因为我们应用JDBC操作数据库时需要创建连接,然后执行完sql语句之后立马就释放连接,用完之后然后释放非常消耗时间,而大部分消耗时间的部位都在创建和释放连接上,真正使用的时候消耗时间是比较少的,因此,业内人士就开发出了连接池来池化这些连接,然后最大化的减少数据库链接的创建和消耗时间。

c3p0链接池会根据我们自己配置的配置文件中初始化N个连接,连接池就会有一定的空闲连接,这些空闲连接使用后又会释放到连接池中,我们操作数据库时只需要去连接池中拿链接就可以了,这样就避免了持续的创建和销毁连接,节省了很大的性能,性能提升非常的优越。

扩展阅读:

二、acquireincrement属性详解

c3p0中配置文件的需要配置的属性有很多,我们首先来说一下acquireincrement属性,该属性是设置的数据库连接数,它的默认值是3,我们可以随意的设置该属性的值,在bean.xml文件中配置即可,具体配置信息详见下图:

52312de9cbd96569bd69348fb7433602.png

acquireincrement表示当我们数据库连接池中没有空闲的连接时,它一次性创建的连接数量,我们设置几就一次性创建几个连接,你也可以理解为数据库中的连接都被使用了,没有了连接的时候或者是连接耗尽的时候我们可以一次性的创建n连接,这个n的值由该acquireincrement属性来决定。

扩展阅读:

三、c3p0连接池其它属性配置详解

2eb1a8a73fa22f63583123eb27223e63.png

上图中展示的的属性我们一一来解释,首先,acquireincrement我们在上文中已经详细介绍过了,这里直接略过就不再详细地讲解了。

acquireRetryAttempts这个property属性,它的默认值是30,我们平常配置时一般直接使用默认值就可以了,完全可以不用配置,但是我们本着讲解的角度还是在说一下吧,它主要意思是,如果数据库获取连接时失败,然后再次重复尝试,这个指代的就是就是重复尝试的次数。

acquireRetryDelay属性指的是如果数据库尝试连接失败时下一次连接的间隔时间,它的默认值是一秒钟,单位用毫秒来表述。

autoCommitOnClose属性,从字面意思看就是自动关闭的意思,它的实际意思就是如果数据库连接关闭了之后还没有进行操作的事物全部进行回滚,默认值是false不回滚。

08e6f38d7f128b381ccb74fa34d88d73.png

automaticTestTable是一个c3p0中自带的的测试属性,如果设置该属性后c3p0会创建一张名为test的数据表,然后使用默认的配置以及自动装备好的sql语句进行测试数据库的连接。

breakAfterAcquireFailure属性,它的意思是假如获取连接失败了之后,如果该属性设置为true,意思就是说该数据源断开链接,所有的链接都没法再次链接了。

如果设置为false的话,该连接失败后其它的所有等待的连接线程将会抛出异常,但是下次使用的时候还能可以正常尝试获取链接,连接池不会断开,因此该属性一般都会设置为false不会设置为true。

checkoutTimeout意思为检测连接超时时间,如果值为0的话,就说明无限等待不会超时,如果设置了值的话就说明如果连接池中没有新的链接后,就会重新调用getConnection()方法重新创建连接,这个是创建连接时的等待时间。

cc1eda1c14ed2612621d6fd6c6a4667f.png

上图中的这几个属性我相信大家应该都经常用过,也是比较简单和清楚的了,maxPoolSize一看就是最大连接数,连接池中设置的能够允许的最大的连接的数量,默认值是15,我们也可以根据自己的需要随意设置。

maxIdleTime指的是连接池中的最大的空闲时间,默认值是零,我们也可以根据我自己的项目以及自己的并发量设置它的空闲时间。如果设置了为60秒还没被调用使用的话就会被丢弃掉了,为0的话是永久不会被丢弃。

initialPoolSize意思是初始化时的连接数量,默认值就是3,idleConnectionTestPeriod这个值设置的是每隔多长时间应该检查一下连接池中的空闲连接是什么样的,一般会设置为一分钟检查一次。

80a3aa86f19c71468aa7e0668c7c22dc.png

overrideDefaultUser这个是默认用户,假设我们用连接池持续连接其它的数据源时,我们会用这个属性指定链接用户,当我们调用getconnection方法获取连接对象的时候所指定的用户名是哪一个。overrideDefaultPassword指的是跟上一个属性的用户名所对应的其用户密码。

feb2e5ab293f02cf57bafae074b9bbc8.png

propertyCycle这个属性跟系统配置有关,假如我们修改了系统配置之后,参数也随之调整,该属性的等待时间是300秒,这个一般也不需要配置,使用默认值即可。

testConnectionOnCheckout该属性的意思是测试连接的性能,当我们设置为true的时候,每次或提交连接的时候都要检测其是否是可用,不过一般该属性设置为false,因为每次都检测有效性非常消耗性能的,而testConnectionOnCheckin属性是检测获取连接时的有效性,跟上一个属性用法一致。

四、spring框架与Hibernate框架中应用c3p0连接池

讲了这么多,我们都是在一一的叙述c3p0中单个属性具体的作用与用法,我们并没有在实际的项目中或者在实际的框架中应用c3p0连接池,下面我们就在Java中最常用的spring框架中整合一下C3P0,让大家了解一下spring框架如何与c3p0连接池完美整合。

467f6d9cd2a975fa41522500c3903fb5.png

090410acb1ab0d7ff2b2c5ebe010c522.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134708.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • npm包–rimraf[通俗易懂]

    npm包–rimraf[通俗易懂]1/含义rimraf 包的作用:以包的形式包装rm-rf命令,用来删除文件和文件夹的,不管文件夹是否为空,都可删除2/安装npminstallrimraf–save-dev3/使用constrimraf=require(‘rimraf’);rimraf(‘./test.txt’,function(err){//删除当前目录下的t

    2025年7月10日
    2
  • 产品密钥无法激活成功,最后使用visio2013激活软件激活成功。「建议收藏」

    产品密钥无法激活成功,最后使用visio2013激活软件激活成功。「建议收藏」装了visio2013,使用网上搜索的产品密钥,没有一个能够激活成功。最后发现了visio的一个激活软件KMSpico,成功激活。激活成功教程工具KMSpico_setup.exe下载地址:https://pan.baidu.com/s/1wElfmRaufSpQGloLgQC64g提取码:kv2h安装后,从开始->程序->KMSpico->启动KMSpic…

    2022年6月24日
    64
  • Canny边缘检测算法原理及其VC实现详解(一)

    Canny边缘检测算法原理及其VC实现详解(一)图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不

    2022年5月30日
    43
  • 初识lunix_centos ubuntu

    初识lunix_centos ubuntuLinux常用快捷键    先安装rz指令,再使用rz进行导入文件    ls显示当前目录下的文件  ls-thal显示当前目录下的文件及详细信息  cd切换目录  mkdir新建目录  cp-r旧目录/新目录拷贝文件  rm-r目录删除文件  su账号名使用指定用户登录系统  tar压缩/解压命令    …

    2022年9月28日
    5
  • AWStats日志分析

    AWStats日志分析AWStats日志分析系统介绍1.AWStats日志分析系统(1)Peri语言开发的一款开源日志分析系统(2)可用来分析Apache、Samba、Vsftpd、IIS等服务器的访问日志(3)信息结合crond等计划任务服务,可对日志内容定期进行分析部署AWStats日志分析系统1.安装AWStats软件包2.为要统计的站点建立配置文件3.修改站点统计配置文件…

    2022年7月16日
    23
  • vector>初始化_电脑初始化出现问题

    vector>初始化_电脑初始化出现问题1、默认初始化,vector为空,size为0,未开辟空间,可通过push_back()添加元素。vector<int>v;v.push_back(10);2、默认初始化,指定vector大小,元素初始值默认为0,元素增多时,同样可以通过push_back()来改变vector大小以增加元素。vector<int>v(5)3、指定初始化元素值为2…

    2022年9月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号