JPAWriterPattern
Das Muster "JPAWriterPattern" wird verwendet, um über eine JPA-Verbindung (Java™ Persistence API) Daten in eine Datenbank zu schreiben.
Unterstützungsklassen
Die Klasse "JPAWriter" implementiert die JPA-Basisoperationen für das Abrufen einer EntityManager-Klasse sowie die Teilnahme (Join) an, das Starten und das Festschreiben von Transaktionen. Standardmäßig nimmt der JPAWriter an einer vorhandenen globalen Transaktion teil.
Packen Sie eine Datei persistence.xml, die das Attribut "transaction-type" auf JTA setzt und ein Element "jta-data-source" deklariert. Konfigurieren Sie optional die Klasse "JPAWriter" so, dass Transaktionen synchronisiert mit den globalen Transaktionen gestartet und festgeschrieben werden. Diese Transaktionen werden mit dem Element "non-jta-data-source" und Verbindungs-URLs verwendet. In diesem Fall setzt die Datei persistence.xml das Element "transaction-type" auf RESOURCE_LOCAL und deklariert ein Element "non-jta-data-source" oder Verbindungs-URLs.
Erforderliche Eigenschaften
Die folgenden Eigenschaften sind für das Muster erforderlich.
Eigenschaftsname | Wert |
---|---|
PATTERN_IMPL_CLASS | Klasse, die die Schnittstelle JPAWriterPattern implementiert |
PERSISTENT_UNIT | Der Name der persistenten Providereinheit. |
JPA-Eigenschaften, die Sie in der Klasse "EntityManager" definieren | Werte dieser Eigenschaften |
Optionale Eigenschaften
Die folgenden Eigenschaften sind für das Muster optional.
Eigenschaftsname | Wert | Beschreibung |
---|---|---|
debug | true oder false (die Standardeinstellung ist "false") | Aktiviert detailliertes Tracing in diesem Stapeldatenstrom. |
use_JTA_transactions | true oder false (die Standardeinstellung ist "true") | Wenn Sie das Element "non-jta-data-source" oder Verbindungs-URLs verwenden, setzen Sie diese Eigenschaft auf false. |
EnablePerformanceMeasurement | true oder false (die Standardeinstellung ist "false") | Berechnet die Gesamtzeit in den Stapeldatenströmen und in der Methode "processRecord" bei Verwendung des GenericXDBatchStep. |
Schnittstellendefinition
public interface JPAWriterPattern {
/**
* Diese Methode wird während der Erstellung des Jobs aufgerufen, um die Initialisierung des JPAWriter-Datenstroms zu ermöglichen.
* @param props - Eigenschaften, die über xJCL übergeben werden
*/
public void initialize(Properties props);
/**
* Diese Methode wird aufgerufen, um das übergebene Objekt mit JPA EntityManager
* persistent in der Datenbank zu speichern
* @param manager
* @param record
*/
public void writeRecord(EntityManager manager, Object record);
}
xJCL-Beispiel
<batch-data-streams>
<bds>
<logical-name>outputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoWriter"/>
<prop name="PERSISTENT_UNIT" value="mypersistentU"/>
<prop name="debug" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.JPAWriter</impl-class>
</bds>
</batch-data-streams>