EzJDBCで妄想してみた(^^;)


EzJDBCをバッチ系処理(大量データを取り扱う処理)でもストレスなく利用する方法を検討中。。。


イメージは以下のような感じ…

1.通常の照会と同様にEzJDBCを利用してテーブルを照会するロジックを記述。
2.EzJDBC#.create(仮名)メソッドを呼び出し、テンポラリファイル(TABLE)を作成し照会結果を出力
    ・照会結果をEXPORTする。
    ・照会結果のメタデータからテンポラリファイル(TABLE)をCREATEする。
       テンポラリ・テーブルはスレッドレベルで作成
    ・EXPORTデータをテンポラリにIMPORTする。
3.テンポラリファイルを利用(照会、更新)する。
4.テンポラリファイルをDROPする。

// テーブル情報インスタンス生成
_CUSTOMER _CS = new CUSTOMER();
// 照会結果をテンポラリファイル(TABLE)に出力
TemporaryFile temp = new EzJDBC().from(_CS._ORTDER._ITEM).where(_CS._ORDER.ID.ge(100)).create();

// テンポラリファイルより読み込み例
Date date = EzConvert.toDate(20090901);
// テンポラリファイルより指定した日付以降の購入日のデータを取得するイテレータを生成
JDBCIterator iterator = new EzJDBC().from(temp).where(_CS._ORDER.PURCHASE_DATE.ge(date))
                                    .orderBy(_CS.BIRTHDAY.asc(),_CS.ID.asc())
                                    .iterator(CustomerOrder.class);
// 一件づつデータ(CUSTOMER)を取得します。
while(iterator.hasNext()) {
	CustomerOrder co = iterator.next();
	ロジック...
}
// JDBCIteratorをクローズします。
iterator.end();
// テンポラリファイルの削除します。
temp.destroy();


POINTはテンポラリファイル(TABLE)は、スレッドレベルで作成できることかなと…(^^;)

こんな機能どうなんでしょうか(・・?