19.3.2. Monitoring a SessionFactory
You can access
SessionFactory
metrics in two ways. Your first option is to call sessionFactory.getStatistics()
and read or display the Statistics
yourself.
Hibernate can also use JMX to publish metrics if you enable the
StatisticsService
MBean. You can enable a single MBean for all your SessionFactory
or one per factory. See the following code for minimalistic configuration examples:
// MBean service registration for a specific SessionFactory Hashtable tb = new Hashtable(); tb.put("type", "statistics"); tb.put("sessionFactory", "myFinancialApp"); ObjectName on = new ObjectName("hibernate", tb); // MBean object name StatisticsService stats = new StatisticsService(); // MBean implementation stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory server.registerMBean(stats, on); // Register the Mbean on the server
// MBean service registration for all SessionFactory's Hashtable tb = new Hashtable(); tb.put("type", "statistics"); tb.put("sessionFactory", "all"); ObjectName on = new ObjectName("hibernate", tb); // MBean object name StatisticsService stats = new StatisticsService(); // MBean implementation server.registerMBean(stats, on); // Register the MBean on the server
You can activate and deactivate the monitoring for a
SessionFactory
:
- at configuration time, set
hibernate.generate_statistics
tofalse
- at runtime:
sf.getStatistics().setStatisticsEnabled(true)
orhibernateStatsBean.setStatisticsEnabled(true)
Statistics can be reset programmatically using the
clear()
method. A summary can be sent to a logger (info level) using the logSummary()
method.