Hibernate getSession与sessionFactoy.currentSession区别

最近用ssh2做项目遇到了一个问题,项目发布以后,点几下就挂掉了,奇怪的是没有任何异常发生。后来发现只有含有DB操作的请求处于一直等待状态,没有DB操作的请求都正常,由此推断是db操作的原因,然后查找db状态,tomcat关闭后有很多连接释放,由此推断是因为DB操作没有关闭数据库连接导致数据库连接达到一定数量导致DB连接异常,但是使用C3P0连接池管理数据库连接,根本不用特意去关闭数据库连接。

经查看代码发现dao中很多都是直接通过getsession获取session然后执行DB操作,由此推断应该是此类代码影响,把这些代码改成getHibernateTemplate().getSessionFactory().getCurrentSession()以后问题果然解决,推断可能是因为getSession方法获取的session并不是由配置的sessionfactory生成,而C3P0数据库连接池是由SessionFactory管理,导致数据库连接一直处于为连接状态。

留待项目不紧张后有时间查看hibernate源码!

希望有了解的大侠给予说明!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值