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