JPAReaderPattern
Das Muster "JPAReaderPattern" wird verwendet, um über eine OpenJPA-Verbindung Daten aus einer Datenbank abzurufen.
Unterstützungsklassen
Die Klasse "JPAReader" führt die Tasks aus, die zum Abrufen eines Entitätenmanagers, zum Ausführen der vom Benutzer bereitgestellten Abfragen und zum Iterieren über der Ergebnisse der Abfrage erforderlich sind. In das Paket mit der Benutzeranwendung muss die Datei persistence.xml aufgenommen werden.
Erforderliche Eigenschaften
Die folgenden Eigenschaften sind für das Muster erforderlich.
Eigenschaftsname | Wert |
---|---|
PATTERN_IMPL_CLASS | Die Klasse, die die Musterschnittstelle "JPAReader" implementiert. |
PERSISTENT_UNIT | Der Name der persistenten OpenJPA-Einheit. |
Optionale Eigenschaften
Die folgenden Eigenschaften sind für das Muster optional.
Eigenschaftsname | Wert | Beschreibung |
---|---|---|
debug | true oder false (der Standardwert ist false) | Aktiviert detailliertes Tracing in diesem Stapeldatenstrom. |
openjpa.Log | DefaultLevel=WARN,SQL=TRACE | Einstellungen des JPA-Protokolls |
EnablePerformanceMeasurement | true oder false (der Standardwert ist false) | Berechnet die Gesamtzeit in den Stapeldatenströmen und in der Methode processRecord bei Verwendung des GenericXDBatchStep. |
EnableDetailedPerformanceMeasurement | true oder false (der Standardwert ist false) | Bietet eine detailliertere Aufgliederung der Zeit pro Methode des Stapeldatenstroms. |
Schnittstellendefinition
public interface JPAReaderPattern {
/**
* Diese Methode wird während der Konfiguration des Jobs aufgerufen.
*
* @param props - Eigenschaften, die über xJCL übergeben werden
*/
public void initialize(Properties props);
/**
* Diese Methode muss Werte für die verschiedenen Spalten der aktuellen Zeile aus dem
* entsprechenden Iterator-Objekt abrufen. * Normalerweise werden diese Daten in ein
* temporäres, zurückzugebendes Objekt gestellt.
* @param listIt
* @return
*/
public Object fetchRecord(Iterator listIt);
/**
* Diese Methode sollte eine JPQL-Abfrage zurückgeben, die bei der Konfiguration
* des Datenstroms zum Abrufen aller relevanten, im Rahmen der Jobabschnitte
* zu verarbeitenden Daten verwendet werden.
* @return - Objekt, das während des Verarbeitungsschritts verwendet werden soll.
*/
public String getInitialLookupQuery();
/**
* Diese Methode wird beim Jobneustart aufgerufen. Das Neustarttoken (restartToken)
* muss verwendet werden, um eine JPQL-Abfrage zum Abrufen zuvor nicht verarbeiteter
* Datensätze zu erstellen.
* Normalerweise ist das restartToken der Primärschlüssel in der Tabelle, und
* die Abfrage ruft alle Zeilen mit Primärschlüsselwert > restartToken ab.
* @param - restartToken
* @return - Abfrage bei Neustart
*/
public String getRestartQuery(String restartToken);
/**
* Diese Methode wird aufgerufen, bevor ein Prüfpunkt abgerufen wird.
* @return - Die Methode muss einen Zeichenfolgewert zurückgeben, der
* den letzten vom Datenstrom gelesenen Datensatz angibt.
*/
public String getRestartTokens();
}
xJCL-Beispiel
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="PERSISTENT_UNIT" value="hellojpa"/>
<prop name="debug" value="true"/>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.samples.JPAInputStream"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.JPAReader</impl-class>
</bds>
</batch-data-streams>