hibernate运行一段时候后出现假死现象

          最近在维护一个外包遗留下的Hibernate+spring+spring mvc的一个项目,发现该项目运行一段时间后,发现APP请求后一直处于等待状态,直到请求超时,于是调试跟踪了一下,发现是操作数据库时一直没有返回,刚开始以为是数据库连接超时,但是后来想想,连接超时应该会报异常呀,而这个是没有报任何异常,程序走到执行SQL语句时就不往下走了,停了,出现假死现象一直没有返回,于是断定可能是操作数据库后连接没有关闭导致数据库连接池满了,但是后来查看代码,发现时DAO继承的是spring的HibernateDaoSupport,所以应该session的关闭都归spring来集中管理,代码不需要手动关闭,郁闷了一段时间,确定再去仔细看了DAO里面的代码,这次发现了一个很有问题的操作,代码里面直接用this.getSession()来操作数据而且没有手动关闭该session,而不是通过this.getHibernateTemplate().getSessionFactory().openSession()来操作数据库,后来查了一下发现如果用this.getSession()是需要手动关闭session的.于是,我在每次this.getSession(),操作数据库后把session关闭,运行了很久后,再也没有出现假死现象了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值