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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android学习之Toast遇到的问题(Toast弹窗不显示,多次点击控件且执行一次弹窗)

    Android学习之Toast遇到的问题(Toast弹窗不显示,多次点击控件且执行一次弹窗)Android学习之Toast遇到的问题及解决办法问题一:代码无问题,Toast弹窗不显示最近在学习Toast对象的时候,用AndroidStudio模拟机去看样式时,弹窗竟然不显示,因为之前都是显示的突然就不显示了,上网搜了一哈找到解决办法–1–换一个模拟机去调试2–清除一下模拟机的缓存(这个挺好用,每次用着用着不显示弹窗的时候我就去清除一下缓存就可以了)**图解如下**找到AVDManager选择你使用的模拟机,在右边小三角里下拉列表中找到WipeDate清除缓存就好啦

    2022年9月2日
  • linux日志审计系统_linux查看审计记录命令

    linux日志审计系统_linux查看审计记录命令Linux日志审计常用命令find、grep、egrep、awk、sedLinux中常见日志以及位置位置名称/var/log/cron记录了系统定时任务相关的日志/var/log/auth.log记录验证和授权方面的信息/var/log/secure同上,只是系统不同/var/log/btmp登录失败记录使用lastb命令查看/var/log/wtmp登录失成功记录使用last命令查看/var/log/lastlog最后一次登录

    2022年10月31日
  • TerminateThread可能导致程序崩溃

    TerminateThread可能导致程序崩溃DWORD__stdcallmythread(void*){   while(true)   {      char*p=newchar[1024];      deletep;   }}int_tmain(intargc,_TCHAR*argv[]){   HANDLEh=CreateThread(NULL,0,mythread,N…

    2022年10月30日
  • ToStringBuilder 学习

    ToStringBuilder 学习一、简介与引入1、ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder、CompareToBuilder等这些类都是位于commons-lang.jar下面的,所以要使用这些类一定要导入commons-lang.jar。2、为什么要使用ToStringBuilder?…

    2022年10月31日
  • LAN8720A移植笔记

    LAN8720A移植笔记自己做的f407VE+LAN8720A板子,使用[野火]《LwIP应用开发实战指南》系列中的例程修改,因为野火使用的是F407ZG的芯片,硬件接线图也不一样,所以还需要做一些修改。User/eth/bsp_eth.h中,需要根据自己的硬件连线修改引脚配置。/*Privatedefines————————————–*/#defineET…

    2022年6月16日
  • redis面试必会6题经典_关于redis秒杀的面试题

    redis面试必会6题经典_关于redis秒杀的面试题Redis面试题1、什么是Redis?.2、Redis的数据类型?3、使用Redis有哪些好处?4、Redis相比Memcached有哪些优势?5、Memcache与Redis的区别都有哪些?6、Redis是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis的持久化机制是什么?各自的优缺点?9、Redis常见性…

    2022年9月3日

发表回复

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

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