ひよっこ。

I want to…

Spring3の宣言的トランザクションが効かなくて焦るなど

Posted by hikaruworld : 2011 1月 26

原因は2つ.

<tx:annotation-driven/>の設定もれとrollback-forの設定漏れ。

<tx:annotation-driven/>に関して

@Transactionalによるアノテーションベースのトランザクション管理をする場合は、
設定ファイル上でこの設定を行う必要がある。
勘違いしたのは、mvc側のannotation-drivenと勘違いしたこと。

http://www.springframework.org/schema/mvcの設定と
http://www.springframework.org/schema/txは全く別物なので注意。

rollback-for

デフォルトでSpringのトランザクション管理をしている場合に例外が発生して、
rollbackされるのは、実行時例外だけ(つまりRuntimeExceptionを継承するクラス)。

つまり、トランザクション内で任意の例外クラスを実装していてtry…catchを強制させたいような
コードを書いている場合は、そのエラーが発生してもロールバックしてくれない。
Exceptionが発生した場合に問答無用でロールバックしたい場合はrollback-for=”java.lang.Exception”
あたりを設定しておく必要がある。

前者は自分の勘違いだから仕方がないとしても、後者の設定はちょっといやだなぁ…

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。