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

- 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.
Successfully loaded the ObjectCache with [...] Entities in [...] seconds.
Vorgehensweise
Beispiel
- 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)”/>