Verwenden Sie Abfrage-Caching im Hibernate-Cache
Beim Abfrage-Caching wird der L2-Cache zum Speichern von Abfragen verwendet, sodass dieselbe Abfrage immer dann aus dem Cache abgerufen werden kann, wenn sie erneut ausgeführt werden muss. Bitte beachten Sie, dass alle als Ergebnis der Abfrage abgerufenen Objekte in den jeweiligen Regionen zwischengespeichert werden. Markieren Sie daher Objekte als zwischenspeicherbar, um das Abfrage-Caching effizient zu nutzen.
Wichtig
Die Abfrage und die Primärschlüssel des Ergebnissatzes werden in einem Standardabfragebereich namens gespeichert „org.hibernate.cache.StandardQueryCache“, ein vollständig qualifizierter Name der StandardQueryCache-Klasse von Hibernate. Dies wird jedoch nur für Hibernate-5.2 und niedriger unterstützt.
Note
Da die Ergebnisse nicht bei jeder Abfrage über einen bestimmten Zeitraum hinweg gleich bleiben, sollten Sie Abfrage-Caching für Abfragen verwenden, deren Ergebnisse sich seltener häufig ändern.
Aktivieren Sie das Abfrage-Caching im Hibernate-Cache
Um das Abfrage-Caching zu aktivieren, fügen Sie im Ruhezustand-Cache das folgende Tag zu Ihrer Konfiguration hinzu hibernate.cfg.xml.
<hibernate-configuration>
<session-factory>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">com.alachisoft.ncache.NCacheRegionFactory</property>
<property name="ncache.application_id">myapp</property>
<property name="hibernate.cache.use_query_cache">true</property>
</session-factory>
</hibernate-configuration>
Wenn Sie den Abfragecache im Ruhezustand-Cache aktivieren, wird nicht jede Abfrage standardmäßig zwischengespeichert. Stattdessen müssen Abfragen, die zwischengespeichert werden müssen, im Code als zwischenspeicherbar festgelegt werden. Um eine Abfrage als zwischenspeicherbar festzulegen, rufen Sie die auf setCacheable(true)
Funktion der Abfrage beim Erstellen einer Abfrage. Der folgende Code ist ein Beispiel, das eine zwischenspeicherbare Abfrage im Hibernate-Cache zeigt:
var session = sessionFactory.openSession();
ArrayList<Products> productList = (ArrayList<Products>) session.createQuery("from Products p", Products.class).setCacheable(true).list();
for (var product : productList) {
System.out.println("Retrieved Product: " + product);
}
session.close();
Siehe auch
Cache initialisieren
Im Cache hinzufügen/aktualisieren
Cache der ersten Ebene im Ruhezustand
Cachefähige Objekte und Regionen konfigurieren
Konfigurieren Sie die Hibernate-Anwendung