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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 简单粗暴的黑苹果安装教程「建议收藏」

    简单粗暴的黑苹果安装教程「建议收藏」首先这是我的电脑配置,当然,玩黑苹果不一定得和我的配置一样~这个链接是几乎我用到的所有文件:链接:https://pan.baidu.com/s/1UIVXqkx3XiLbEsGsGbXA_A提取码:ex3f全部下载即可####1、做系统盘:1、准备一个8G以上的U盘打开上面工具里面的TransMac软件,检测到我们的U盘,然后右击,选择如图所示的第二个:FormatDis…

  • hdu 2058_HAL248

    hdu 2058_HAL248ThesumproblemTimeLimit:5000/1000MS(Java/Others)  MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):24299  AcceptedSubmission(s):7247ProblemDescriptionGivenas

  • linux修改密码的方法_linux密码正确无法登录

    linux修改密码的方法_linux密码正确无法登录情景:Linux服务器上用户的密码被服务器管理员发现太过简单,需要重置密码。处理时为了方便记忆,就直接使用普通用户登录,修改密码时,在原密码的基础上增加一串特定的数字,结果提示不通过。例如出现错误提示”BADPASSWORD:itisbasedonyourusername”。网罗相应的资料得知:1、使用管理员帐号root怎么设置都可以,可以不受验证机制的约束。2、普通用户修改自己…

  • 自己动手——快速搭建Java应用服务器

    自己动手——快速搭建Java应用服务器Motivation我写这套帖子的目的,是在自己学会、实现并熟练掌握之后,想帮助下面将会提到的这样一群正在学习Android的新手(虽然我自己也是新手),通过自己的经验传递出去,让他们少走一点弯路,节省大量用在查询和翻阅资料的时间。我在学习编写自己的Android应用程序服务器的时候遇到过以下的问题:1.我需要准备什么?2.我该选择哪一套实现方案?……这些问题的搜索和查证都…

  • MongoDB安装教程「建议收藏」

    MongoDB安装教程「建议收藏」MongoDB安装教程

  • exosip「建议收藏」

    exosip「建议收藏」exosip针对UA是对osip进行扩展,oSIP不提供不论什么高速产生请求消息和响应消息的方法,全部请求消息和响应消息的形成必须调用一组sipmessageapi来手动组装完毕,所以作者在osi

发表回复

您的电子邮箱地址不会被公开。

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