WSJPA-Objektcache automatisch vorher laden

Die WSJPA-Erweiterung (WebSphere Java™ Persistence API) für OpenJPA stellt einen schreibgeschützten Objektcache bereit, mit dem die Leistung in bestimmten Anwendungsfällen verbessert werden kann. Standardmäßig werden die Daten im Cache mit einer so genannte Lazy-Methode geladen, d. h., dass einzelne Entitäten in den Speicher geladen werden, wenn sie von einer Anwendung angefordert werden. Wenn Sie jedoch von Anfang an alle Entitäten geladen haben möchten, können Sie den Anwendungsserver so konfigurieren, dass alle Entitäten aus der Datenbank, die im Objektcache konfiguriert sind, vorher geladen werden (Preload). Der Preload des Objektcache ermöglicht Ihnen, Entitäten, die ansonsten, wenn Sie den Objektcache mit der Lazy-Methode laden, eingeschränkt wären, zwischenzuspeichern. Diese Konfiguration wird nur unterstützt, wenn Sie WSJPA mit der Spezifikationsstufe JPA 2.0 verwenden.

Informationen zu diesem Vorgang

Wenn Sie das automatische Laden des Objektcache aktivieren, passt die JPA-Umgebung automatisch die Größe des Objektcache an und lädt den Objektcache, anstatt darauf zu warten, dass einzelne Entitäten von Anwendungen angefordert werden. Wenn der Anwendungsserver den ersten EntityManager erstellt, startet der Preloadprozess, und der Anwendungsserver lädt alle im Objektcache konfigurierten Entitäten aus der Datenbank. Dieser Preloadprozess verläuft asynchron in einem separaten Verarbeitungsthread.
Fehler vermeiden Fehler vermeiden: Beachten Sie Folgendes:
  • Für Entitäten, die im Objektcache konfiguriert sind, müssen Sie auch alle sofort zu ladenden Beziehungen konfigurieren. Beziehungen, die möglicherweise mit Verzögerung geladen werden, sind nicht verfügbar.
  • Während der Anwendungsserver den Objektcache vorher lädt, werden Entitäten aus der Datenbank abgerufen. Der Anwendungsserver fügt keine Entitäten zum Objektcache hinzu, die von anderen Methoden geladen werden.
  • Das automatische Laden des Cache kann sehr viel Zeit in Anspruch nehmen, wenn der Objektgraph komplex ist.
  • Seien Sie vorsichtig, wenn Sie dieses Feature aktivieren, denn es könnte sämtlichen verfügbaren Hauptspeicher belegen. Damit diese Funktion ordnungsgemäß funktioniert, muss der gesamte Datensatz für die JPA-Umgebung im Hauptspeicher verfügbar sein.
gotcha
Wenn der Preloadprozess abgeschlossen ist, wird eine Informationsnachricht wie die folgende angezeigt:
Successfully loaded the ObjectCache with [...] Entities in [...] seconds.

Vorgehensweise

  1. Setzen Sie die Eigenschaft "MaxSize" für den Objektcache auf auto. Nehmen Sie z. B. den folgenden Eintrag in Ihre Datei mit der Erweiterung ".properties" auf:
    <property name="wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto)”/>
    Der Standardwert für die Eigenschaft "MaxSize" ist "1000", doch wenn Sie die Eigenschaft "MaxSize" auf auto setzen, wird der Mechanismus für automatisches Laden aktiviert.
  2. Optional: Überprüfen Sie den Wert, den Sie für die Eigenschaft "EvictionSchedule" setzen. Informationen zu dieser Eigenschaft finden Sie im Artikel WSJPA-Objektcache zur Leistungsverbesserung konfigurieren. Wenn Sie die Eigenschaft "EvictionSchedule" in Verbindung mit der Einstellung "MaxSize=auto" verwenden, wird die Eigenschaft "EvictionSchedule" abweichend vom Standardverhalten implementiert: Der Objektcache wird nicht gemäß dem konfigurierten Plan gelöscht, sondern automatisch erneut geladen.

Beispiel

Die folgenden Beispiele zeigen, wie Sie vorgehen müssen, um den Objektcache für automatisches Laden zu konfigurieren:
  • Die folgende Eigenschaft legt fest, dass der Objektcache automatisch geladen wird, wenn der Anwendungsserver den ersten EntityManager erstellt:
    <property name=" wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto)”/>
  • Die folgende Eigenschaft legt fest, dass der Objektcache automatisch geladen wird, wenn der Anwendungsserver den ersten EntityManager erstellt, und dass der Objektcache alle 20 Minuten erneut geladen wird:
    <property name=" wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar,
     MaxSize=auto, EvictionSchedule=+20)”/>

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_jpaautoloadcache
Dateiname:tejb_jpaautoloadcache.html