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

HTML&JSなど画面まわり&サーブレット小ネタ

サーブレットでアプリ作ってますが、画面まわりに関していろいろいじっているのでそこら辺のネタなんかを。 Contents1 テーブルの結合2 JSPでの動的HTML→POSTで認識できない3 動的プルダ …

no image

Annotationについて

Javaのアノテーションですが、よく出てくる割には場面場面でよくでてくるんですけど、根本的にはよく理解できていませんでした。 今もあまりわかっていませんが・・・やはり理解するためには自分で作成するのが …

no image

ApacheCommonsのライブラリ

先日のエントリーでBeanUtilsが非常に使えるという話をしたのですが、それ以外にもApacheCommonsのライブラリには使えるものがかなりあります。 かなりあります、というかなぜ今まで使ってな …

no image

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …

no image

Streamについて

Java8で導入されたStreamですが、名前はしっていたものの、使い方がわからず放置していました。 これを機に調べたのですが、コレクションフレームワークの拡張のようですね。 特徴としては以下のような …