JDBCCallableStatementReaderPattern
Dieses Muster wird verwendet, um die Geschäftslogik für die Verarbeitung von Daten aus einer JDBC-Verbindung (Java™ Database Connectivity) mit einer gespeicherten Prozedur zu implementieren. Die Verwaltungstasks für das Öffnen und Schließen der Verbindung werden vom Stapelframework ausgeführt.
Unterstützungsklassen
- JDBCCallableStatementReader
Diese Klasse wird referenziert, wenn das Verwendungsmuster Ihres JDBC-Eingabedatenstroms ein einzelnes Ergebnis aus einer Abfrage abruft. Die Abfrage und die Ergebnisse werden nach jeder Iteration des Abschnitts verworfen. Diese Klasse unterscheidet sich insofern von JDBCReader, dass sie eine aufrufbare Anweisung anstelle einer vorbereiteten Anweisung verwendet.
- LocalJDBCCallableStatementReader
Diese Klasse wird referenziert, wenn Daten aus einer lokalen Datenbank gelesen werden.
Erforderliche Eigenschaften
Die folgenden Eigenschaften sind für das Muster erforderlich.
Eigenschaft | Wert | JDBCCallableStatementReader | LocalJDBCCallableStatementReader |
---|---|---|---|
PATTERN_IMPL_CLASS | Die Klasse, die die Schnittstelle "JDBCCallableStatementReaderPattern" implementiert. | Zutreffend | Zutreffend |
ds_jndi_name | Der JNDI-Name der Datenquelle. | Zutreffend | Zutreffend |
jdbc_url | Der JDBC-URL, z. B. jdbc:derby:C:\\mysample\\CREDITREPORT. | Nicht zutreffend | Zutreffend |
jdbc_driver | Der JDBC-Treiber. Beispiel: org.apache.derby.jdbc.EmbeddedDriver | Nicht zutreffend | Zutreffend |
userid | Die Benutzer-ID für die Datenbank. | Nicht zutreffend | Zutreffend |
pswd | Das Benutzerkennwort. | Nicht zutreffend | Zutreffend |
Optionale Eigenschaften
Die folgenden Eigenschaften sind für das Muster optional.
Eigenschaftsname | Wert | Beschreibung | JDBCCallableStatementReader | LocalJDBCCallableStatementReader |
---|---|---|---|---|
CursorHoldabilityEnabled | true oder false (der Standardwert ist false) | Aktiviert die Cursoroffenhaltung für diesen BDS-Reader. | Zutreffend | Zutreffend |
debug | true oder false. Der Standardwert ist false. | Aktiviert detailliertes Tracing in diesem Stapeldatenstrom. | Zutreffend | Zutreffend |
EnablePerformanceMeasurement | true oder false. Der Standardwert ist false. | Berechnet die Gesamtzeit in den Stapeldatenströmen und in der Methode processRecord bei Verwendung des GenericXDBatchStep. | Zutreffend | Zutreffend |
EnableDetailedPerformanceMeasurement | true oder false. Der Standardwert ist false. | Bietet eine detailliertere Aufgliederung der Zeit pro Methode des Stapeldatenstroms. | Zutreffend | Zutreffend |
Schnittstellendefinition
public interface JDBCCallableStatementReaderPattern {
/**
* 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 resultset-Objekt abrufen. Normalerweise werden diese Daten in ein
* temporäres, zurückzugebendes Objekt gestellt.
* @param resultSet
* @return
*/
public Object fetchRecord(ResultSet resultSet);
/**
* Diese Methode muss ein ResultSet-Objekt zurückgeben, das vom Datenstrom verwendet wird, um alle
* relevanten Daten abzurufen, die im Rahmen der Jobabschnitte verarbeitet werden.
*/
public ResultSet getResultSet(CallableStatement cstmt) throws SQLException ;
/**
* Diese Methode muss eine aufrufbare Anweisung (CallableStatement) zurückgeben, die während des
* Einrichtens des Datenstroms verwendet wird, um alle relevanten Daten abzurufen, die im Rahmen
* der Jobabschnitte verarbeitet werden.
* @return - Objekt, das während des Verarbeitungsschritts verwendet werden soll.
*/
public CallableStatement getInitialCallableStatement(Connection con);
/**
* Diese Methode wird beim Jobneustart aufgerufen. Das Neustarttoken muss verwendet werden,
* um eine aufrufbare Anweisung (CallableStatement) zu erstellen, die zuvor nicht
* verarbeitete Datensätze abruft.
* 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 CallableStatement getRestartCallableStatement(Connection con,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();
}
JDBCCallableStatementReader-xJCL-Beispiel
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="IMPLCLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoReader"/>
<prop name="ds_jndi_name" value="jdbc/echojndi"/>
<prop name="debug" value="false"/>
<prop name="EnablePerformanceMeasurement" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.JDBCCallableStatementReader</impl-class>
</bds>
</batch-data-streams>