Doma 1.21.0 リリース

Doma 1.21.0 をリリースしました。

ダウンロードはこちらからどうぞ。

Mavenをご利用の方はこちらを参照ください。

以前のバージョンから移行するには移行ガイドを参照ください。

リリースノート

New Feature

  • [DOMA-255] - [Core] IterationCallback実行後に任意の処理を行えるようにしました。
  • [DOMA-256] - [Core] ローカルトランザクションにて、明示的に切断するまでJDBC接続を維持し続けられるようにしました。
  • [DOMA-257] - [Core] @BatchInsert/@BatchUpdate/@BatchDeleteのアノテーションにbatchSize要素を追加しました。

機能紹介

ざっくりと。

DOMA-255

PostIterationCallbackインタフェースが新しく追加されました。
このインタフェースを使うと、イテレーション検索の完了後に任意の処理を実行できます。

Salary sum = dao.selectByAge(30,
    new PostIterationCallback<Salary, Employee>() {
        @Override
        public Salary iterate(Employee target,
                IterationContext context) {
            ...
        }
        @Override
        public Salary postIterate(Salary result,
                IterationContext context) {
            // ここで任意の処理!
            ...
        }
    });
DOMA-256

コネクションプーリングを使っていないがコネクション確立のコストを避けたいなど、物理的な1コネクションで複数トランザクションを実行したい場合に利用できます。利用ケースはおそらく少ないです。

        KeepAliveLocalTransaction tx = AppConfig.getKeepAliveLocalTransaction();
        tx.init(); // ここでコネクションを確保
        try {
            try {
                tx.begin();
                ...
                tx.commit();
            } finally {
                tx.rollback();
            }
            try {
                tx.begin();
                ...
                tx.commit();
            } finally {
                tx.rollback();
            }
        } finally {
            tx.destroy(); // ここでコネクションを破棄
        }

興味がある場合は、チュートリアルのサンプルコードもどうぞ。
https://www.seasar.org/svn/doma/tags/1.21.0/doma-tutorial/src/test/java/tutorial/KeepAliveLocalTransactionTest.java

DOMA-257

これまでバッチサイズは設定クラスでしか指定できませんでしたが、Daoのメソッド個別に指定できるようになりました。

@BatchInsert(batchSize = 30)
int[] batchInsert(List<Employee> employees);

なんで、この機能がこれまでなかったかというと、たぶん実装し忘れですね。