2

我正在尝试调试存在一些性能问题的 Web 应用程序。我打开了休眠日志,我看到了很多这样的:

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 但它没有任何东西可以让我对日志感到安心

4

2 回答 2

3

查看源代码,消息似乎是从SessionImpl.java的构造函数记录下来的。会话关闭时有相应的日志语句(参见方法public Connection close() throws HibernateException),但它是在TRACE级别记录的。我对 slf4j 不熟悉,但从这篇文档来看,它看起来TRACEDEBUG. 所以尝试增加日志记录的数量(也许是ALL?)并验证会话是否关闭。

于 2010-10-28T19:52:47.717 回答
1

您如何访问会话?你用的是spring事务注解吗?

我们在我们当前的应用程序中使用休眠模板.. 虽然这显然不再需要。尽管我确实看到了其他休眠初始化调试语句,但我不知何故没有看到它作为调试出现。

无论如何,您可能可以获得对会话工厂的引用并调用 sessionFactory.getStatistics().getSessionOpenCount()

您可能必须调用 setStatisticsEnabled(true)

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-28T19:53:25.953 回答