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

JSFでのjQuery

JSFでのjQueryの取得 以前、Seleniumに関連したエントリーを書いたときにJSFではidが親要素を伴うと書きました。 例えば <form id=”form1″ …

no image

Annnotationについて その2

Java(JavaEE)をやりだして半年ぐらいたつんですが、個人的に鬼門だとおもっていたのが下記内容です。 MVCではないコンポーネントの考え方 クラスを使ったジェネリクスの使い方(型パラメータなど) …

no image

Streamでの特定条件化のカウント&合計値算出

Java8、streamで値を抽出し、カウントと合計値の算出について、小ネタです。 一番多いのがList<Map>タイプの値の検出です。 [crayon-5d59150b61d068991 …

no image

依存関係エラー

JavaEEで新PCでビルドしたらいきなりエラー。同一のソースを別PCで動かすと正常に立ち上がります。 こんな場合、GlassFishの設定がおかしいか、ライブラリの依存関係に問題があることがほとんど …

no image

JSPでのカスタムタグ

前回のインク―ドですが、文字列以上の情報を渡すことはできませんでした。 いろいろ調べたり、上司に聞いてみるとカスタムタグという独自のタグを作る機能があるとのことでさっそく調査。 Contents1 カ …