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

kubo [E-MAIL ADDRESS DELETED]
2008年 6月 17日 (火) 17:55:14 JST


久保です。

mackeyさんへ

userTransactionを生で使ったこと無いのですが、
やりたいことは提示されたトランザクションの位置で
意識合っています。
もし、コミットを数千件単位で行うとかであれば、
実際にはコミットの記述はループの中で適切な
タイミングで実行することになると思います。


2008/6/17  <[E-MAIL ADDRESS DELETED]>:
> お世話になります。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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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