Hibernate易忘记配置release_mode

一个项目,启动tomcat服务器后,页面刷新第三次就出现等待服务器状态,并且一直等待下去(不报错)


       使用Hibernate时,大家一般都记住了配置基本的那些选项,比如方言,缓存等,但是有一项配置卻很容易忘掉,这就是连接释放模式:hibernate.connection.release_mode

       可有三个选择:after_statement/after_transaction/on_close,javadoc中可以看出它们的用处,注意的一点是,如果不配置,默认是on_close,那么如果沒有显示的去调用session.close或其它关闭连接的方法的话,这个连接时不会被关闭的!在用到连接池的時候,就更会出现问题了,池中的连接会一直存在着而不会被关闭和回收!


  从log4j打印出来的日志也可以看出來,如果是on_close模式,从:


      transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!


  具体的一些细节可以看看hibernate的源代码,涉及到的两个行为:


  org.hibernate.ConnectionReleaseMode
  org.hibernate.jdbc.ConnectionManager


  最后,配置的代码为:
  <prop key="hibernate.connection.release_mode">after_transaction</prop>


转自:http://lin5061.iteye.com/blog/88289

猜你喜欢

转载自speed.iteye.com/blog/1402192
今日推荐