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

配列の参照の仕方

変数が存在しているにもかかわらず値が入っていないときは、プログラミングではNULLという表記をします。(ちなみに空白が入っているのとは違います。) これはプログラマにとってはほぼ常識的な内容なのですが …

no image

Messageプロパティの設置方法

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

no image

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

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

no image

設定ファイルの置き場所

一般的にレベルの高いソースとは保守性が高いものを指します。特にWEB系ですと仕様変更がしょっちゅうなので変更があったときにいかに少ない工数で対応できるかが大切です。 保守性をあげる工夫はいろいろありま …

no image

Javaのオブジェクト指向に関して

Contents1 staticメソッド2 アクセス修飾子3 抽象クラス3.1 オーバーライド(親クラスのメソッドを上書きすること)3.2 オーバーロード(同名メソッドを複数もつこと)4 interf …

アーカイブ