How to expose Hibernate Statistics via JMX

(Last Updated On: May 10, 2019)
Imagine having a tool that can automatically detect if you are using JPA and Hibernate properly. Hypersistence Optimizer is that tool!

Introduction

As already explained, Hibernate provides a very flexible statistics mechanism. The Hibernate metrics can be accessed either programmatically via the org.hibernate.stat.Statistics interface or via JMX (Java Management Extensions).

In this article, you are going to see how you can expose the Hibernate statistics metrics using JMX.

Configuration

By default, the Hibernate statistics mechanism is not enabled, so you need to activate it using the following configuration property:

<property name="hibernate.generate_statistics" value="true"/>

To expose the Hibernate metrics via JMX, you also need to set the hibernate.jmx.enabled configuration property:

<property name="hibernate.jmx.enabled" value="true"/>

Now, Hibernate is going to collect metrics and expose them via JMX.

Not that due to the HHH-6190 issue, the Hibernate Statistics object was not exposed via JMX. This issue has been fixed in Hibernate ORM 5.4.2, so consider upgrading your Hibernate version if you want to benefit from this feature.

Testing time

To see the Hibernate statistics metrics via JMX, we need to open JConsole and attach a new connection to our Hibernate application. Afterward, you need to go to the MBeans tab and locate the org.hibernate.core package as illustrated by the following screenshot.

Hibernate Statistics JMX

Notice the org.hibernate.stat.internal.StatisticsImpl MBean which provides access to all metrics supported by the Hibernate Statistics interface.

Cool, right?

If you enjoyed this article, I bet you are going to love my Book and Video Courses as well.

Conclusion

The advantage of exposing the Hibernate statistics via JMX is that you can further export these metrics to an APM (Application Performance Monitoring) tool which aggregates metrics from different sources (e.g. OS, database, cache) and correlate them so that you get a better insight into the inner workings of your system.

Download free ebook sample

Newsletter logo
10 000 readers have found this blog worth following!

If you subscribe to my newsletter, you'll get:
  • A free sample of my Video Course about running Integration tests at warp-speed using Docker and tmpfs
  • 3 chapters from my book, High-Performance Java Persistence,
  • a 10% discount coupon for my book.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Want to run your data access layer at warp speed?