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