skillup

技術ブログ

Java

JavaEEのトランザクションに関して

投稿日:2015年11月17日 更新日:

最近あまり触れていないJavaEEのトランザクションについて。

JavaEEの場合、EJB環境では@Statelessを付けることによりトランザクション管理を行うことができます。

トランザクション管理が必要となるのはやはり1つのメソッドではなく、複数のメソッドが動いているときです。

例えば上記の例でfunc2とfunc3がともにデータベースに何らかのデータを登録するような作業を行っているとします。

この場合、func2が成功しても、func3が失敗した場合、ロールバックが走りfunc2もなかったものとなります。

これによりデータの安全性、一貫性が保たれます

この仕組みがよくわかっていない時は下記のようなメソッドを書いてトランザクションの動きを無視していました・・

下記の例ではEJBのメソッドを外部から呼び出しているため、単一のメソッドに対して、コミットが発生してしまいます。func3がダメでもfunc2が登録されてしまいます。

このように便利なEJBのトランザクション管理ですが、全ての例外に対して必ず動くわけではありません。一部例外もあるため、その場合は自前でrollbackを実装する必要があります。詳しくはリンクを参照。

参考リンク

金魚本第9章

EJBを使用したトランザクション管理

-Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

動的な置換

前回、置換に関する記事をまとめましたが動的な置換について勉強する機会があったのでまとめておきます。一般に置換表現というのはほとんどが静的なものかと思います。 例えば <intpu type=&# …

no image

Messageプロパティの設置方法

JavaEEに限らず、エラーメッセージなどは通常、プログラムの中に書くのではなく、できればエラーメッセージファイルの中で管理するのが望ましいでしょう。 またJSF側の名称の表示なども直接xhtmlの中 …

no image

CDIの循環依存エラー&JSFでの条件分岐について

本日は小ネタなので2つのネタをまとめます。 Contents1 CDI循環依存エラー2 JSFでの条件分岐 CDI循環依存エラー 半年近くやってますが、いまだにJavaEEでエラーがでてくると焦ります …

no image

mavenのリモートリポジトリについて

JPAでO/Rマッパーに慣れてからというもの通常のSQLをごりごり書くのが億劫になってきました。 億劫というかいろいろとリスクがありますね。 問題点としてはコンパイルするときにエラーが検知できなかった …

no image

Javaでのスクレイピング

スクレイピングというと一般的にはRubyが一番有名なようですが、もちろんスクレイピング自体はどの言語でも行うことができます。 Contents1 スクレイピングの手法1.1 正規表現1.2 HTMLパ …