我正在尝试调试一个有一些性能问题的web应用程序。我打开了hibernate日志,我看到了很多这样的情况:
2010-10-28 10:58:00,423 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786198212608
2010-10-28 10:58:01,390 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786202173440
2010-10-28 10:58:01,418 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786202288128
2010-10-28 10:58:26,181 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786303717376我担心没有关于“封闭会话”的日志()。
我现在正在看这个:http://static.springsource.org/spring/docs/2.5.x/reference/orm.html,但是它没有任何东西能让我对日志感到安心。
发布于 2010-10-28 19:53:25
你是如何访问会话的?您正在使用spring事务注释吗?
我们在当前的应用程序中使用hibernate模板。虽然这显然已经不需要了。虽然我确实看到了其他hibernate初始化调试语句,但我并不认为这是调试的结果。
无论如何,您可能会获得对会话工厂的引用并调用sessionFactory.getStatistics().getSessionOpenCount()。
您可能必须调用setStatisticsEnabled(真)
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/stat/Statistics.html
这至少可以让您了解开放会话的数量,看看它是否在持续上升。
根据binil的回答,还有一个关于在不同日志级别上打开/关闭日志条目的错误报告。http://opensource.atlassian.com/projects/hibernate/browse/HHH-2425
发布于 2010-10-28 19:52:47
查看来源,消息似乎是从SessionImpl.java的构造函数中记录下来的。会话关闭时有一个相应的日志语句(请参阅方法public Connection close() throws HibernateException),但这是在TRACE级别记录的。我对slf4j并不熟悉,但从这份文件的角度看,TRACE的水平似乎比DEBUG高。因此,尝试增加日志记录的数量(可能是ALL吗?)并验证会话是否已关闭。
https://stackoverflow.com/questions/4044249
复制相似问题