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)は、スレッドレベルで作成できることかなと…(^^;)
こんな機能どうなんでしょうか(・・?