解决spring+c3p0数据库连接一直增加的问题

本文详细介绍了在Spring+C3P0环境下,数据库连接持续增加的问题及解决方案。问题源于配置错误、手动打开Session未关闭、Hibernate配置问题以及重复加载ApplicationContext。文章提供了解决这些问题的不同方法,包括检查配置、正确关闭Session、调整Hibernate连接释放模式以及避免重复加载应用上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决spring+c3p0数据库连接一直增加的问题

  • 问题描述
  • spring+c3p0的配置
  • 针对不同情况的解决方案

问题描述:

SSH框架,hibernate的配置由spring接管,数据源的配置放在spring的配置文件中,当数据源不配置数据库连接池时,数据库的连接处于正常状态,中规中矩地每次需要了建立连接,用完了释放连接,没有任何资源复用的概念。访问量小的时候问题不大,访问量大的时候问题就来了,1000个用户重复了1000个建立连接和释放连接的动作,显而易见的极大资源浪费,连接池的基本目的即在此处,把建立好的连接进行复用,节省资源的同时也一定程度提高用户访问速度,因为对数据库的操作不用每次重新建立连接了。可是当引入c3p0数据库连接池之后发现,每一个接口的访问都会增加一定数量的数据库连接,在数据库命令窗口用root用户登录,使用show processlist;命令查看连接数,数量随着接口的访问持续增加,并且在接口访问结束之后几乎不会有连接释放,等待多久连接数依旧。

贴一下applicationContext.xml文件中的配置代码:

数据源配置:
<bean id="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close" >
        <property name="driverClass"
            value="com.mysql.jdbc.Driver">
        </property>
        <property name="jdbcUrl"
            value="jdbc:mysql://xx.xx.xx.xx:3306/icheck_sziit">
        </property>
        <property name="user" value="xxx"></property>
        <property name="password" value="xxx"></property>
        <!--连接池中保留的最小连接数。-->
        <property name="minPoolSize"><value>5</value></property>
        <!--连接池中保留的最大连接数。Default: 15 -->
        <property name="maxPoolSize"><value>30</value></property>
        <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
        <property name="initialPoolSize"><value>10</value></property>
        <!--最大空闲时间,30秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
        <property name="maxIdleTime"><value>20</value></property>
        <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
        <property name=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值