skillup

技術ブログ

Java

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

投稿日:

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

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

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

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

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

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

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

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

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

参考リンク

金魚本第9章

http://d.hatena.ne.jp/gloryof/20120917/1347860695

-Java
-,

執筆者:


comment

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

関連記事

no image

Enumでメソッドの実装

以前、Enum式で値を定義したことはありましたが、なんとメソッドが実装できることを知りました。 Contents1 Enumでのメソッドを実装2 複雑なメソッドの実装 Enumでのメソッドを実装 op …

no image

日付けのメソッド その2

以前、時刻を扱うエントリーではCalendarクラスとDateクラスを使いましたが、Java8で標準になったTimeAPIについて調べてみます。 Contents1 現在時刻の出力2 任意時間の出力3 …

no image

JavaEEでリダイレクトを伴うデータ入出力(flashの活用)

JavaEEで何らかの処理を行い、リダイレクトさせる場合、リダイレクト前のデータを保存し、リダイレクト後のページにデータをもちこしたいときなどがあると思います。 オブジェクトの変数自体はスコープアノテ …

no image

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

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

no image

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

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