チャンク指向の処理

Spring Batch は、最も一般的な実装で「チャンク指向」の処理スタイルを使用します。チャンク指向の処理とは、一度に 1 つずつデータを読み取り、トランザクション境界内に書き出される「チャンク」を作成することを指します。読み込まれたアイテムの数がコミット間隔と等しくなると、チャンク全体が ItemWriter によって書き出され、トランザクションがコミットされます。次の図は、プロセスを示しています。

Chunk Oriented Processing
図 1: チャンク指向の処理

次の擬似コードは、同じ概念を簡略化した形式で示しています。

List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
    Object item = itemReader.read();
    if (item != null) {
        items.add(item);
    }
}
itemWriter.write(items);

オプションの ItemProcessor を使用してチャンク指向のステップを構成して、項目を ItemWriter に渡す前に処理することもできます。次の図は、ステップで ItemProcessor が登録されたときのプロセスを示しています。

Chunk Oriented Processing With Item Processor
図 2: アイテムプロセッサーを使用したチャンク指向の処理

次の擬似コードは、これが簡略化された形式でどのように実装されるかを示しています。

List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
    Object item = itemReader.read();
    if (item != null) {
        items.add(item);
    }
}

List processedItems = new Arraylist();
for(Object item: items){
    Object processedItem = itemProcessor.process(item);
    if (processedItem != null) {
        processedItems.add(processedItem);
    }
}

itemWriter.write(processedItems);

アイテムプロセッサーとその使用例の詳細については、アイテム処理セクションを参照してください。