トランザクション

トランザクション制御は、S2Txを利用する
http://homepage3.nifty.com/seasar/tx.html
(S2DAOからはじめたので、しばらくトランザクションのかけかたが不明だった。。。)。


トランザクションをかけたいクラスの例

public class TransSample {

    public void doSomeUpdate(){
        S2Container container = S2ContainerFactory.create("dao/test.dicon");
        CdDao dao = (CdDao)container.getComponent(CdDao.class);
        //...いろいろ更新
    }
}


diconファイルの例


    j2ee.requiredTx

この場合、pointcut(メソッド)の指定は必要な模様(自動的にメソッド全部にはならない)。
このメソッドを実行すると次のようなログが出る。

DEBUG 2004-10-14 22:28:10,481 [main] トランザクションを開始しました
//...いろいろ
DEBUG 2004-10-14 22:28:10,891 [main] トランザクションをコミットしました

普通にメソッドが終了すると、トランザクションがコミットされる。
途中で例外が投げられると、ロールバックされる。
いやな例外を消したいときは例外を処理するaspectをかけるといいらしい。
http://seasarproject.g.hatena.ne.jp/match8/20040902