[Seasar-user:14725] Re: [DBflute]外だしSQLのカーソル検索でフェッチエラー

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 6月 17日 (火) 12:59:56 JST


お世話になります。mackeyです。
久保様、回答ありがとうございます。

>UserTransactionを直接利用しているのであれば、
>トランザクションの開始と終了の両方をCallbackメソッド
>内部で記述することでカーソル検索はトランザクションから
>外れます。
→こちらの方法で実行したいと思います。
Callbackメソッド内部というのは下記のように
カーソル呼び出し中のことでよろしいでしょうか?
final PurchaseSummaryMemberCursorHandler handler = new PurchaseSummaryMemberCursorHandler() 
{
    public Object fetchCursor(PurchaseSummaryMemberCursor cursor) throws SQLException {
        // トランザクションを開始する。
         userTransaction.begin();
        while (cursor.next()) {
            final Integer memberId = cursor.getMemberId();
            final String memberName = cursor.getMemberName();
            final Integer purchaseSummary = cursor.getPurchaseSummary();

            _log.debug("  " + memberId + " - " + memberName + " - " + purchaseSummary);

        }
        // コミット処理
        userTransaction.commit();
        return null;
    }
};
memberBhv.outsideSql().cursorHandling().selectCursor(path, pmb, handler);

>割り切れる件数のときは一気にInsertしてしまいますが、
>あまりに膨大な件数の場合は自分も同じようにすると思います。
>(カーソル検索でTSV作って、その後DBのBulkInsert機能で登録)
→ちなみにSQLLODERをjavaから呼び出すというこはjavaからバッチを
起動することになりますか?


Seasar-user メーリングリストの案内