JTA (Java Transaction API)

トランザクション管理用のJAVA EEのAPI。よく分からんのでメモ、以下あってるかどうか未検証。

@TransactionAttributeアノテーションをメソッドかクラスに付けると、JTAに対応しているコンテナがよきに計らってくれる。以下、発生した例外はキャッチせずに上に投げる前提(Calleeで例外が発生した場合Callerも中断される、とする)

  • REQUIRED - トランザクション内で呼び出されればトランザクションを継続し、トランザクション外ならば作る
    • Callerがトランザクション内
      • Callerで例外 - Caller、Callee共にロールバック
      • Calleeで例外 - Caller、Callee共にロールバック
    • Callerがトランザクション外
      • Callerで例外 → ロールバックしない
      • Calleeで例外 → Calleeの処理のみロールバック
  • REQUIRES_NEW - トランザクション内で呼び出されても、新しくトランザクションを作る
    • Callerがトランザクション内
      • Callerで例外 - Callerをロールバック
      • Calleeで例外 - Caller, Callee共にロールバック
    • Callerがトランザクション外
      • Callerで例外 → ロールバックしない
      • Calleeで例外 → Calleeの処理をロールバック
  • NOT_SUPPORTED - 既にトランザクション内で呼び出されても、トランザクション外で実行する
    • Callerがトランザクション内
      • Callerで例外 - Callerをロールバック
      • Calleeで例外 - Callerをロールバック
    • Callerがトランザクション外
      • Callerで例外 → ロールバックしない
      • Calleeで例外 → ロールバックしない
  • MANDATORY - トランザクション外で実行されるとエラー
    • Callerがトランザクション内
      • Callerで例外 - Caller, Callee共にロールバック
      • Calleeで例外 - Caller, Callee共にロールバック
    • Callerがトランザクション外
      • 実行できない
  • NEVER - トランザクション内で実行されるとエラー
    • Callerがトランザクション内
      • 実行できない
    • Callerがトランザクション外
      • Callerで例外 → ロールバックしない
      • Calleeで例外 → ロールバックしない
  • SUPPORTS - トランザクション内で呼び出されればトランザクションを継続、トランザクション外ならそのまま
    • Callerがトランザクション内
      • Callerで例外 - Caller、Callee共にロールバック
      • Calleeで例外 - Caller、Callee共にロールバック
    • Callerがトランザクション外
      • Callerで例外 → ロールバックしない
      • Calleeで例外 → ロールバックしない
 
java/jta.txt · 最終更新: 2008/08/19 12:15 (外部編集)
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki