hibernate显示查询执行时间

Ilk*_*kar 23 hibernate

我正在寻找设置hibernate或log4j来告诉我,在hibernate中执行查询需要多长时间,这些查询是由hql调用的.

直到现在我没有发现任何有趣的东西.

也许有些人可能会帮我解决这个问题?

Pet*_*vic 27

有一种简单的方法(内置hibernate)来实现它.它由HHH-36593.5.4和中修复3.6.0.Beta1.

要使用它,请使用:

  • 登录包:org.hibernate.stat至少在INFO
  • 设置hibernate属性: hibernate.generate_statistics=true

之后SQL将记录所有s,包括获取的行计数和查询执行所花费的时间.

此外,如果感兴趣,它提供查询统计信息.要将它们暴露在外并通过JMX它们使用JConsole,您可以使用Hibernate JConsole plugin,请访问:http://hibernate-jcons.sourceforge.net/

  • 嗨彼得,它对我有用,但我不得不改变log4j的级别来跟踪org.hibernate.stat以使其正常工作.谢谢你的解决方案 (6认同)
  • 我试过这个,一个缺点是它会在会话结束时报告统计数据.如果您在一个会话中执行了很多操作,则无法确定每个会话的性能.例如"1436424992纳秒执行14个JDBC语句;" (4认同)

Dat*_*atz 8

使用 Spring Boot,您可以在您的 中使用这两行application.properties

logging.level.org.hibernate.stat=DEBUG
spring.jpa.properties.hibernate.generate_statistics=true
Run Code Online (Sandbox Code Playgroud)


Sla*_*hin 4

要将查询及其执行时间记录到日志文件中,您可以尝试Craftsman Spy JDBC Driver,它执行完全相同的操作,并且与 Spring 进行简单集成

另一种方法是使用Spring Insight,它显示 JDBC/Hibernate 调用和更多详细信息。

相关链接: