@InheritedSE @InterceptorBinding @TargetSE(valueSE={TYPESE,METHODSE}) @RetentionSE(valueSE=RUNTIMESE) public @interface Transactional
jakarta.transaction.Transactional アノテーションは、CDI マネージド Bean、および Jakarta EE 仕様によってマネージド Bean として定義されたクラスのトランザクション境界を、メソッドレベルのアノテーションがメソッドレベルのアノテーションをオーバーライドするクラスレベルとメソッドレベルの両方で宣言的に制御する機能をアプリケーションに提供します。クラスレベル。
Jakarta Enterprise Beans での @Transactional の使用に関する制限については、Jakarta Enterprise Beans 仕様を参照してください。
このサポートは、必要な一時停止、再開などを実行する CDI インターセプターの実装を介して提供されます。トランザクションインターセプターは、ビジネスメソッドの呼び出しにのみ介入し、ライフサイクルイベントには介入しません。ライフサイクルメソッドは、未指定のトランザクションコンテキストで呼び出されます。
Bean のスコープ内から UserTransaction インターフェースのメソッドを呼び出そうとする場合、または @Transactional と、NOT_SUPPORTED または NEVER 以外の Transactional.TxType でアノテーションが付けられたメソッドは、IllegalStateException をスローする必要があります。UserTransaction の使用は、ライフサイクルイベント内で許可されています。@Transactional アノテーションに関係なく、TransactionSynchronizationRegistry の使用は許可されます。
トランザクションインターセプターには、Interceptor.Priority.PLATFORM_BEFORE + 200 の優先度が必要です。詳細については、インターセプターの仕様を参照してください。
アノテーションの TxType 要素は、Bean メソッドがトランザクションコンテキスト内で実行されるかどうかを示します。TxType.REQUIRED がデフォルトです。
デフォルトでは、チェックされた例外は、トランザクションインターセプターがトランザクションにロールバックのマークを付けることはなく、RuntimeException のインスタンスとそのサブクラスはマークします。このデフォルトの動作は、インターセプターがトランザクションにロールバックのマークを付けることになる例外や、ロールバックにならない例外を指定することで変更できます。
rollbackOn 要素を設定すると、インターセプターがトランザクションをロールバック対象としてマークする必要がある例外を示すことができます。
逆に、dontRollbackOn 要素を設定すると、インターセプターがトランザクションをロールバック対象としてマークしてはならない例外を示すことができます。
これらの要素のいずれかにクラスが指定されている場合、指定された動作はそのクラスのサブクラスにも適用されます。両方の要素が指定されている場合は、dontRollbackOn が優先されます。
修飾子と型 | オプションの要素と説明 |
---|---|
ClassSE[] | dontRollbackOn dontRollbackOn 要素を設定すると、インターセプターがトランザクションをロールバック対象としてマークしてはならない例外を示すことができます。 |
ClassSE[] | rollbackOn rollbackOn 要素を設定すると、インターセプターがトランザクションをロールバック対象としてマークする必要がある例外を示すことができます。 |
Transactional.TxType | value Transactional アノテーションの TxType 要素は、Bean メソッドがトランザクションコンテキスト内で実行されるかどうかを示します。 |
public abstract Transactional.TxType value
public abstract ClassSE[] rollbackOn
public abstract ClassSE[] dontRollbackOn
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.