Training, Workshops, Softwareentwicklung

Hibernate Tutorial

Konfiguration

Hibernate erlaubt uns einen sog. Second-Level Cache zu aktivieren, der über alle EntityManager einer PersistenceUnit hinweg Zugriffe auf die Datenbank vermeiden kann.

Der Cache, über den wir in diesem Abschnitt reden, greift im wesentlichen bei zwei Operationen:

  • find() und

  • merge()

Es gibt auch noch einen gesonderten Query Cache, mit dem man Abfragen cachen kann.

Hibernate greift beim Second Level Cache auf existierende Cache Implementierungen zurück. Praktisch alle Cache Implementierungen in der Java-Welt haben einen Adapter für Hibernate.

In den ersten Beispielen arbeiten wir mit jcache/ehcache. Die erforderlichen Libraries erhalten wir mit:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jcache</artifactId>
    <version>${hibernate.version}</version>
</dependency>
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>${ehcache.version}</version>
</dependency>

Damit Hibernate weiß, das wir ehcache benutzen wollen, setzen wir in der persistence.xml

<property name="hibernate.cache.region.factory_class"
          value="jcache"/>

oder alternativ in unserer Java-basierten Konfiguration im `PersistenceHelper'

properties.put(AvailableSettings.CACHE_REGION_FACTORY,
        "jcache");

In vielen Beispielen sieht man zusätzlich noch hibernate.cache.use_second_level_cache, doch diese Property ist automatisch gesetzt, sobald wir hibernate.cache.region.factory_class mit einem sinnvollen Wert einstellen. Ist also unnötig.