Hibernate Cache Monitor einrichten mit AspectJ und Spring

Um in Hibernate die Geschwindigkeit zu erhöhen, kann man unter anderem einen Second Level Cache einrichten. Dieser kann die Anzahl der Datenbank-Abfragen verringern, indem er die Entities zwischen den Hibernate Sessions zwischenspeichert.

Manchmal ist es aber nicht ganz offensichtlich, ob der Cache funktioniert bzw. wieviel Cache-Hits man hat. Deshalb wollen wir uns ansehen, wie wir die Statistiken mitloggen können und einen Cache Monitor hierfür einrichten:

Dazu verwenden wir die AspectJ Library. Diese ermöglicht uns, um jede Methode einer Data Access Object Klasse (DAO) eine eigene Funktion auszuführen und so alle potentiellen Cache Hits mitzuloggen. Hierzu müssen wir die Library in unsere pom.xml aufnehmen, zusammen mit Spring AOP:

Danach erstellen wir eine Klasse CacheMonitor in unserem Projekt. Hier wird die Statistik aus der Hibernate Session Factory ausgelesen, welche alle für uns relevanten Daten mitführt.
Eine Übersicht über alle Statistiken könnt Ihr in der Doku nachlesen: https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/stat/Statistics.html

Zum Schluss muß noch eine Zeile in der Spring-Konfiguration hinzugefügt werden:

Wenn alles funktioniert, tauchen im Log entsprechende Meldungen auf und man kann kontrollieren, wieweit der Second Level Cache funktioniert und der Applikation Performance bringt.