2010-10-28 112 views
2

我正在嘗試調試有一些性能問題的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 但它沒有任何東西可以讓我安心記錄日誌

回答

1

您如何訪問會話?你使用春季交易註釋嗎?

我們在當前的應用程序中使用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

3

看着source,該消息似乎是從SessionImpl.java的構造函數中記錄下來的。會話關閉時會有相應的日誌語句(請參閱方法public Connection close() throws HibernateException),但會記錄在TRACE級別。我對slf4j不熟悉,但從this piece of documentation看起來好像TRACEDEBUG更精細。因此,請嘗試增加日誌記錄的數量(可能爲ALL?),並驗證會話是否已關閉。