From Software Development to Rock Music....

Mittwoch, 12. September 2007

Hibernate Statistics

Mit den Hibernate Statistics kann man das Verhalten von Hibernate zur Laufzeit beobachten. So kann man zum Beispiel herausfinden wie oft welche Query aufgerufen wurde und was die Max, Min und Avg Laufzeit der Abfrage ist. Weiterhin kann auch das Verhalten des Second Level Caches überprüft werden. Eine genaue Aufstellung der gelieferten Informationen bietet die Javadoc des org.hibernate.stat.Statistics Interfaces.

Natürlich werden per Default keine Statistiken von Hibernate aufgezeichnet. Erst mit dem Property hibernate.generate_statistics = true zeichnet Hibernate selbige auf.

Um die Statistiken abzufragen hat man folgende Möglichkeiten:
1) JMX
2) Manuelle Abfrage über die SessionFactory
3) Dump auf die Konsole

JMX
Um Statistiken via JMX abzufragen muss eine MBean registriert werden (org.hibernate.jmx.StatisticsService). Das Ganze kann programmatisch oder konfigurativ erfolgen. Die Konfiguration von JMX ist von Appserver zu Appserver unterschiedlich. Im JBoss muss man lediglich folgenden Eintrag der jboss-service.xml Datei hinzufügen:

<mbean code="org.hibernate.jmx.StatisticsService" name="Hibernate:type=statistics"/>


Programmatisch kann die MBean wie folgt registriert werden (will man keine spezifische SF angeben so lässt man einfach die vorletzte Zeile weg):
Hashtable tb = new Hashtable();
tb.put("type", "statistics");
tb.put("sessionFactory", "myFinancialApp");
ObjectName on = new ObjectName("hibernate", tb);
StatisticsService stats = new StatisticsService();
stats.setSessionFactory(sessionFactory);
server.registerMBean(stats, on);



Manuelle Abfrage über SessionFactory
Falls kein JMX zur Verfügung steht können die Statistics immer noch über die SessionFactory abgefragt werden. Die entsprechende Funktion heisst sessionFactory.getStatistics() und gibt ein Objekt vom Typ org.hibernate.stat.Statistics zurück.

Dump auf die Konsole
Einen Schnellschuss bietet sessionFactory.getStatistics().logSummary() an. Auf diese Weise wird eine knappe und meiner Meinung nach nicht sehr brauchbare Zusammenfassung der Statistics auf STDOUT geloggt.

Quellen:
http://www.hibernate.org