Das clientbasierte JPA-Preload-Dienstprogramm (Java Persistence API) lädt Daten über eine Clientverbindung zum ObjectGrid in die BackingMaps von eXtreme Scale.
Diese Funktion kann das Laden der Maps vereinfachen, wenn die Datenbankabfragen nicht partitioniert werden können. Es kann auch ein Loader (Ladeprogramm), wie z. B. ein JPA-Loader, verwendet werden, das sich ideal eignet, wenn die Daten parallel geladen werden können.
Das clientbasierte JPA-Preload-Dienstprogramm kann die OpenJPA- und Hibernate-JPA-Implementierungen verwenden, um das ObjectGrid aus einer Datenbank zu laden. Da WebSphere eXtreme Scale nicht direkt mit der Datenbank bzw. mit Java Database Connectivity (JDBC) interagiert, kann jede von OpenJPA bzw. Hibernate unterstützte Datenbank zum Laden des ObjectGrids verwendet werden.
Gewöhnlich übergibt eine Benutzeranwendung den Namen einer Persistenzeinheit, den Namen einer Entitätsklasse und eine JPA-Abfrage an das Clientladeprogramm. Das Clientladeprogramm ruft den JPA-EntityManager anhand des Namens der Persistenzeinheit ab, verwendet den EntityManager, um Daten aus der Datenbank über die angegebene Entitätsklasse und JPA-Abfrage abzufragen, und lädt schließlich die Daten in die verteilten ObjectGrid-Maps. Wenn mehrschichtige Relationen an der Abfrage beteiligt sind, können Sie eine angepasste Abfragezeichenfolge verwenden, um die Leistung zu optimieren. Optional könne Sie eine Map für Persistenzeigenschaften angeben, um die konfigurierten Persistenzeigenschaften zu überschreiben.
Ein Clientladeprogramm kann Daten in zwei verschiedenen Modi laden, wie in der folgenden Tabelle gezeigt wird:
Modus | Beschreibung |
---|---|
Preload (Vorheriges Laden) | Löscht und lädt alle Einträge in die BackingMap. Wenn die Map eine Entity-Map ist, werden auch alle zugehörigen Entity-Maps gelöscht, wenn die ObjectGrid-Option "CascadeType.REMOVE" aktiviert ist. |
Reload (Erneutes Laden) | Die JPA-Abfrage wird für das ObjectGrid ausgeführt, um alle Entitäten in der Map ungültig zu machen, die der Abfrage entsprechen. Wenn die Map eine Entity-Map ist, werden auch alle zugehörigen Entity-Maps gelöscht, wenn die ObjectGrid-Option "CascadeType.INVALIDATE" aktiviert ist. |
In beiden Fällen wird eine JPA-Abfrage verwendet, um die gewünschten Entitäten aus der Datenbank auszuwählen und zu laden und in den ObjectGrid-Maps zu speichern. Wenn die ObjectGrid-Map keine Entity-Map ist, werden die JPA-Entitäten freigegeben und direkt gespeichert. Wenn die ObjectGrid-Map eine Entity-Map ist, werden die JPA-Entitäten als ObjectGrid-Entitätstupel gespeichert. Sie können eine JPA-Abfrage angeben oder die Standardabfrage select o from EntityName o verwenden.
Weitere Informationen zum Konfigurieren des clientbasierten JPA-Preload-Dienstprogramms finden Sie in Clientbasierte JPA-Loader entwickeln.