@TargetSE(valueSE={TYPESE,METHODSE}) @RetentionSE(valueSE=RUNTIMESE) @InheritedSE @DocumentedSE public @interface Transactional
クラスレベルでは、このアノテーションはデフォルトとして宣言クラスとそのサブクラスのすべてのメソッドに適用されます。クラス階層の上位の先祖クラスには適用されないことに注意してください。サブクラスレベルのアノテーションに参加するには、メソッドをローカルで再宣言する必要があります。
通常、このアノテーション型は Spring の RuleBasedTransactionAttribute
クラスに直接匹敵します。実際、AnnotationTransactionAttributeSource
はデータを後者のクラスに直接変換するため、Spring のトランザクションサポートコードはアノテーションを知る必要がありません。例外に関連するルールがない場合、DefaultTransactionAttribute
のように扱われます(RuntimeException
SE および Error
SE をロールバックしますが、チェック済みの例外はロールバックしません)。
このアノテーションの属性のセマンティクスに関する特定の情報については、TransactionDefinition
および TransactionAttribute
javadoc を参照してください。
TransactionAttribute
, DefaultTransactionAttribute
, RuleBasedTransactionAttribute
修飾子と型 | オプションの要素と説明 |
---|---|
Isolation | isolation トランザクション分離レベル。 |
ClassSE<? extends ThrowableSE>[] | noRollbackFor ゼロ (0) 以上の例外 Classes SE を定義します。これは Throwable SE のサブクラスである必要があり、どの例外型がトランザクションのロールバックを引き起こしてはならないかを示します。 |
StringSE[] | noRollbackForClassName ゼロ (0) 個以上の例外名( Throwable SE のサブクラスでなければならない例外)を定義し、どの例外型がトランザクションロールバックを引き起こしてはならないかを示します。 |
Propagation | propagation トランザクション伝播型。 |
boolean | readOnly トランザクションが事実上読み取り専用である場合に true に設定できるブールフラグ。実行時に対応する最適化が可能です。 |
ClassSE<? extends ThrowableSE>[] | rollbackFor ゼロ (0) 以上の例外 classes SE を定義します。これは Throwable SE のサブクラスである必要があり、どの例外型がトランザクションのロールバックを引き起こす必要があるかを示します。 |
StringSE[] | rollbackForClassName ゼロ (0) 個以上の例外名( Throwable SE のサブクラスでなければならない例外の場合)を定義し、どの例外型がトランザクションロールバックを引き起こす必要があるかを示します。 |
int | timeout このトランザクションのタイムアウト(秒単位)。 |
StringSE | transactionManager 指定されたトランザクションの修飾子値。 |
StringSE | value transactionManager() のエイリアス。 |
@AliasFor(value="transactionManager") public abstract StringSE value
transactionManager()
のエイリアス。transactionManager()
@AliasFor(value="value") public abstract StringSE transactionManager
特定の TransactionManager
Bean 定義の修飾子値(または Bean 名)に一致するターゲットトランザクションマネージャーを決定するために使用できます。
value()
, PlatformTransactionManager
, ReactiveTransactionManager
public abstract Propagation propagation
デフォルトは Propagation.REQUIRED
です。
public abstract Isolation isolation
デフォルトは Isolation.DEFAULT
です。
新しく開始されたトランザクションにのみ適用されるため、Propagation.REQUIRED
または Propagation.REQUIRES_NEW
で使用するために特別に設計されています。異なる分離レベルの既存のトランザクションに参加するときに分離レベルの宣言を拒否したい場合は、トランザクションマネージャーで "validateExistingTransactions" フラグを "true" に切り替えることを検討してください。
TransactionDefinition.getIsolationLevel()
, AbstractPlatformTransactionManager.setValidateExistingTransaction(boolean)
public abstract int timeout
基になるトランザクションシステムのデフォルトのタイムアウトがデフォルトになります。
新たに開始されたトランザクションにのみ適用されるため、Propagation.REQUIRED
または Propagation.REQUIRES_NEW
での使用専用に設計されています。
public abstract boolean readOnly
true
に設定できるブールフラグ。実行時に対応する最適化が可能です。 デフォルトは false
です。
これは、実際のトランザクションサブシステムのヒントとしてのみ機能します。 必ずしも書き込みアクセスの試行が失敗するわけではありません。読み取り専用ヒントを解釈できないトランザクションマネージャーは、読み取り専用トランザクションを要求されたときに例外をスローせず、静かにヒントを無視します。
TransactionDefinition.isReadOnly()
, TransactionSynchronizationManager.isCurrentTransactionReadOnly()
public abstract ClassSE<? extends ThrowableSE>[] rollbackFor
classes
SE を定義します。これは Throwable
SE のサブクラスである必要があり、どの例外型がトランザクションのロールバックを引き起こす必要があるかを示します。 デフォルトでは、トランザクションは RuntimeException
SE および Error
SE でロールバックされますが、チェック済み例外(ビジネス例外)ではロールバックされません。詳細な説明については、DefaultTransactionAttribute.rollbackOn(Throwable)
を参照してください。
これは、(rollbackForClassName()
とは対照的に)例外クラスとそのサブクラスを一致させるロールバックルールを構築するための推奨する方法です。
RollbackRuleAttribute.RollbackRuleAttribute(Class clazz)
に似ています。
public abstract StringSE[] rollbackForClassName
Throwable
SE のサブクラスでなければならない例外の場合)を定義し、どの例外型がトランザクションロールバックを引き起こす必要があるかを示します。 これは、完全修飾クラス名の部分文字列にすることができますが、現在のところワイルドカードはサポートされていません。例: "ServletException"
の値は javax.servlet.ServletException
とそのサブクラスに一致します。
NB: パターンの具体性と、パッケージ情報を含めるかどうか(これは必須ではありません)を慎重に検討してください。例: "Exception"
はほぼすべてに一致し、おそらく他のルールを非表示にします。"Exception"
がすべてのチェック済み例外のルールを定義することを意図していた場合、"java.lang.Exception"
は正しいでしょう。"BaseBusinessException"
などのより珍しい Exception
SE 名では、FQN を使用する必要はありません。
RollbackRuleAttribute.RollbackRuleAttribute(String exceptionName)
に似ています。
public abstract ClassSE<? extends ThrowableSE>[] noRollbackFor
Classes
SE を定義します。これは Throwable
SE のサブクラスである必要があり、どの例外型がトランザクションのロールバックを引き起こしてはならないかを示します。 これは、(noRollbackForClassName()
とは対照的に)例外クラスとそのサブクラスを一致させるロールバックルールを構築するための推奨する方法です。
NoRollbackRuleAttribute.NoRollbackRuleAttribute(Class clazz)
に似ています。
public abstract StringSE[] noRollbackForClassName
Throwable
SE のサブクラスでなければならない例外)を定義し、どの例外型がトランザクションロールバックを引き起こしてはならないかを示します。 指定された名前の処理方法の詳細については、rollbackForClassName()
の説明を参照してください。
NoRollbackRuleAttribute.NoRollbackRuleAttribute(String exceptionName)
に似ています。