I was looking for setup hibernate or log4j to show me, how long are executed queries in hibernate, which are invoked by hql.
Till now i didn't found anything interesting.
Maybe some of you might help me with this issue ?
There is a simple way (built in hibernate
) to achieve it. It was fixed by HHH-3659 in 3.5.4
and 3.6.0.Beta1
.
To go for it, use:
org.hibernate.stat
at least on DEBUG
andhibernate.generate_statistics=true
Afterwards all the SQL
s will be logged including the row count fetched and the time the query execution took.
Moreover if interested, it provides statistics on queries. To have them exposed via JMX
and see them using JConsole
, you can use Hibernate JConsole plugin
, available on: http://hibernate-jcons.sourceforge.net/
With Spring Boot you can use these two rows in your application.properties
:
logging.level.org.hibernate.stat=DEBUG
spring.jpa.properties.hibernate.generate_statistics=true
To log queries with its execution time to log file you may try Craftsman Spy JDBC Driver which do exactly same things and has simple integration with Spring.
Another way is to using Spring Insight which shows JDBC/Hibernate calls and many more details.
Related links:
If you want a custom solution, you can use the AOP and add an around advice around the hibernate session class if you are executing native queries.