JDBCReaderPattern
このパターンは、Java™ Database Connectivity (JDBC) 接続を使用してデータベースからデータを検索するために使用されます。
サポートされるクラス
- CursorHoldableJDBCReaderこのクラスは、JDBC 入力ストリームの使用パターンがステップの開始時に一連の結果を検索し、ステップの処理ロジック全体を通じてそれらの結果を繰り返し適用するときに、参照されます。 CursorHoldableJDBCReader は、カーソル保持可能な非 XA データ・ソースとともにステートフル・セッション Bean を使用します。 カーソル保持可能 JDBCReader は、トランザクションがコミットされてもカーソルが失われないような方法で実装されたパターンです。 その結果、各チェックポイントの後で ResultSets の再取り込みを行う必要がなくなり、パフォーマンスが向上します。 CursorHoldableJDBCReader を使用するためには、CursorHoldableSessionBean をアプリケーションにパッケージしてください。パッケージを作成するには、nonxadsjndiname=jndi_name_of_a_non-XA_data_source_to_database プロパティーを BatchPackager によって使用されるプロパティー・ファイルに追加します。例えば、nonxadsjndiname=jdbc/nonxads などです。 複数の非 XA データ・ソースを追加する場合は、nonxadsjndiname=<jndi name1>;<jndi name2>... のように入力します。制約事項: 現時点では、JDBC データ・ソースのリソース参照名は Java Naming and Directory Interface (JNDI) 名と同じです。
- JDBCReader
このクラスは、JDBC 入力ストリームの使用パターンが照会から単一の結果を検索するときに参照されます。この結果は、そのステップのそれぞれの反復の後で使用されて廃棄されます。
- LocalJDBCReader
このクラスは、ローカル・データベースからデータが読み取られるときに参照されます。
必須プロパティー
以下は、このパターンの必須のプロパティーです。
プロパティー | 値 | LocalJDBCReader | CursorHoldableJDBCReader | JDBCReader |
---|---|---|---|---|
PATTERN_IMPL_CLASS | JDBCReaderPattern インターフェースを実装するクラス | 該当あり | 該当あり | 該当あり |
ds_jndi_name | データ・ソース JNDI 名。 | 該当あり | 該当なし | 該当あり |
jdbc_url | JDBC の URL。例えば、jdbc:derby:C:¥¥mysample¥¥CREDITREPORT です。 | 該当あり | 該当なし | 該当なし |
jdbc_driver | JDBC ドライバー。例えば、org.apache.derby.jdbc.EmbeddedDriver です。 | 該当あり | 該当なし | 該当なし |
userid | データベースのユーザー ID。例えば、Myid です。 | 該当あり | 該当なし | 該当なし |
pswd | ユーザー・パスワード。例えば mypwd などです。LocalJDBCReader 専用です。 | 該当あり | 該当なし | 該当なし |
オプション・プロパティー
以下は、このパターンのオプションのプロパティーです。
プロパティー名 | 値 | 説明 | LocalJDBCReader | CursorHoldableJDCReader | JDBCReader |
---|---|---|---|---|---|
CursorHoldabilityEnabled | true または false (デフォルトは false) | この BDS リーダーのカーソル保持機能を有効にします。 | 該当あり | 該当あり | 該当あり |
debug | true または false (デフォルトは false) | このバッチ・データ・ストリームに対する詳細トレースを使用可能にします。 | 該当あり | 該当あり | 該当あり |
EnablePerformanceMeasurement | true または false (デフォルトは false) | GenericXDBatchStep を使用している場合に、バッチ・データ・ストリームおよび processRecord メソッドに費やされた合計時間を計算します。 | 該当あり | 該当あり | 該当あり |
EnableDetailedPerformanceMeasurement | true または false (デフォルトは false) | バッチ・データ・ストリームの各メソッドで費やされた時間のより詳細な明細を提供します。 | 該当あり | 該当あり | 該当あり |
インターフェース定義
public interface JDBCReaderPattern {
/**
* This method is invoked during the job setup phase.
*
* @param props properties provided in the xJCL
*/
public void initialize(Properties props);
/**
* This method should retrieve values for the various columns for the current row from the given resultset
* object.
Typically this data would be used to populate an intermediate object which would be returned
* @param resultSet
* @return
*/
public Object fetchRecord(ResultSet resultSet);
/**
* This method should return a SQL query that will be used during setup of the stream to retrieve all
* relevant data that would be processed part of the job steps
* @return object to be used during process step.
*/
public String getInitialLookupQuery();
/**
* This method gets called during Job Restart. The restart token should be used to create an SQL query
* that will retrieve previously unprocessed records. Typically the restart token would be the primary
* key in the table and the query would get all rows with
* primary key value > restarttoken
* @param restartToken
* @return The restart query
*/
public String getRestartQuery(String restartToken);
/**
* This method gets called just before a checkpoint is taken.
* @return The method should return a string value identifying the last record read by the stream.
*/
public String getRestartTokens();
}
CursorHoldableJDBCReader xJCL の例
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoReader"/>
<prop name="ds_jndi_name" value="jdbc/fvtdb"/>
<prop name="debug" value="true"/>
<prop name="DEFAULT_APPLICATION_NAME" value="XDCGIVT"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.CursorHoldableJDBCReader</impl-class>
</bds>
</batch-data-streams>
LocalJDBCReader xJCL の例
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoReader"/>
<prop name="jdbc_url" value="jdbc:derby:C:¥¥mysample¥¥CREDITREPORT"/>
<prop name="jdbc_driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<prop name="user_id" value="myuserid"/>
<prop name="pswd" value="mypswd"/>
<prop name="debug" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.LocalJDBCReader</impl-class>
</bds>
</batch-data-streams>