2012-09-29 133 views
19

我正在尋找安裝程序hibernate或log4j向我展示hibernate執行的查詢在hibernate中執行多長時間,由hql調用。hibernate顯示查詢執行時間

直到現在我沒有發現任何有趣的事情。

也許你們中的一些人可能會幫我解決這個問題?

回答

2

如果你想定製的解決方案,你可以使用AOP和周圍的Hibernate的Session類添加一個環繞通知,如果你正在執行原生查詢。

22

有一個簡單的方法(建在hibernate)來實現它。它被HHH-36593.5.43.6.0.Beta1中修復。

去,請使用:

  • 的日誌功能包:org.hibernate.stat至少在INFO
  • 集Hibernate屬性:hibernate.generate_statistics=true

之後,將所有的SQL旨意記錄包括獲取的行數和執行查詢的時間。

此外,如果有興趣,它提供查詢統計。讓他們通過JMX暴露,並看到他們使用JConsole,您可以使用Hibernate JConsole plugin,可在:http://hibernate-jcons.sourceforge.net/

+6

喜彼得,它爲我,但我不得不改變Log4j的水平,微量元素對org.hibernate.stat來獲取加工。感謝您的解決方案 –

+1

這對我有效! 在logback.xml中: 在hibernate.properties中:hibernate.generate_statistics = true – formica

+0

它適用於由org.hibernate.loader發送的JDBC查詢。 Loader,但不是由org.hibernate.jdbc.AbstractBatcher發送的(延遲加載)。最簡單的解決方案是在「DEBUG」上配置「org.hibernate。*」的日誌記錄,並查看在哪個日誌時間戳處執行哪個查詢。 – metatechbe