ユーザ用ツール

サイト用ツール


java:jta

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 03:15 by 127.0.0.1