public class DefaultTransactionDefinition extends ObjectSE implements TransactionDefinition, SerializableSE
TransactionDefinition
インターフェースのデフォルト実装。Bean スタイルの構成と適切なデフォルト値(PROPAGATION_REQUIRED、ISOLATION_DEFAULT、TIMEOUT_DEFAULT、readOnly = false)を提供します。TransactionTemplate
と DefaultTransactionAttribute
の両方の基本クラス。
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | PREFIX_ISOLATION TransactionDefinition で定義されている分離定数のプレフィックス。 |
static StringSE | PREFIX_PROPAGATION TransactionDefinition で定義された伝搬定数のプレフィックス。 |
static StringSE | PREFIX_TIMEOUT 説明文字列のトランザクションタイムアウト値のプレフィックス。 |
static StringSE | READ_ONLY_MARKER 説明文字列内の読み取り専用トランザクションのマーカー。 |
ISOLATION_DEFAULT, ISOLATION_READ_COMMITTED, ISOLATION_READ_UNCOMMITTED, ISOLATION_REPEATABLE_READ, ISOLATION_SERIALIZABLE, PROPAGATION_MANDATORY, PROPAGATION_NESTED, PROPAGATION_NEVER, PROPAGATION_NOT_SUPPORTED, PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_SUPPORTS, TIMEOUT_DEFAULT
コンストラクターと説明 |
---|
DefaultTransactionDefinition() デフォルト設定で、新しい DefaultTransactionDefinition を作成します。 |
DefaultTransactionDefinition(int propagationBehavior) 指定された伝播動作で新しい DefaultTransactionDefinition を作成します。 |
DefaultTransactionDefinition(TransactionDefinition other) コピーコンストラクター。 |
修飾子と型 | メソッドと説明 |
---|---|
boolean | equals(ObjectSE other) この実装は、 toString() の結果を比較します。 |
protected StringBuilderSE | getDefinitionDescription() このトランザクション定義の識別記述を返します。 |
int | getIsolationLevel() 分離レベルを返します。 |
StringSE | getName() このトランザクションの名前を返します。 |
int | getPropagationBehavior() 伝播動作を返します。 |
int | getTimeout() トランザクションタイムアウトを返します。 |
int | hashCode() この実装は、 toString() のハッシュコードを返します。 |
boolean | isReadOnly() 読み取り専用トランザクションとして最適化するかどうかを返します。 |
void | setIsolationLevel(int isolationLevel) 分離レベルを設定します。 |
void | setIsolationLevelName(StringSE constantName) TransactionDefinition の対応する定数の名前で分離レベルを設定します。 |
void | setName(StringSE name) このトランザクションの名前を設定します。 |
void | setPropagationBehavior(int propagationBehavior) 伝播動作を設定します。 |
void | setPropagationBehaviorName(StringSE constantName) TransactionDefinition の対応する定数の名前で伝播動作を設定します。 |
void | setReadOnly(boolean readOnly) 読み取り専用トランザクションとして最適化するかどうかを設定します。 |
void | setTimeout(int timeout) 秒数として、適用するタイムアウトを設定します。 |
StringSE | toString() このトランザクション定義の識別記述を返します。 |
cloneSE, finalizeSE, getClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
withDefaults
public static final StringSE PREFIX_PROPAGATION
public static final StringSE PREFIX_ISOLATION
public static final StringSE PREFIX_TIMEOUT
public DefaultTransactionDefinition()
public DefaultTransactionDefinition(TransactionDefinition other)
public DefaultTransactionDefinition(int propagationBehavior)
propagationBehavior
- TransactionDefinition インターフェースの伝搬定数の 1 つ setIsolationLevel(int)
, setTimeout(int)
, setReadOnly(boolean)
public final void setPropagationBehaviorName(StringSE constantName) throws IllegalArgumentExceptionSE
constantName
- 定数の名前 IllegalArgumentExceptionSE
- 指定された値が PROPAGATION_
定数の 1 つに解決できない場合、または null
である場合 setPropagationBehavior(int)
, TransactionDefinition.PROPAGATION_REQUIRED
public final void setPropagationBehavior(int propagationBehavior)
新しく開始されたトランザクションにのみ適用されるため、TransactionDefinition.PROPAGATION_REQUIRED
または TransactionDefinition.PROPAGATION_REQUIRES_NEW
で使用するために特別に設計されています。異なる分離レベルの既存のトランザクションに参加するときに分離レベルの宣言を拒否したい場合は、トランザクションマネージャーで "validateExistingTransactions" フラグを "true" に切り替えることを検討してください。
TransactionDefinition.ISOLATION_DEFAULT
以外のレベルが指定された場合、カスタム分離レベルをサポートしないトランザクションマネージャーは例外をスローすることに注意してください。
IllegalArgumentExceptionSE
- 指定された値が PROPAGATION_
定数のいずれでもない場合 TransactionDefinition.PROPAGATION_REQUIRED
public final int getPropagationBehavior()
TransactionDefinition
this interface
で定義された PROPAGATION_XXX
定数のいずれかを返さなければなりません。
デフォルトは TransactionDefinition.PROPAGATION_REQUIRED
です。
public final void setIsolationLevelName(StringSE constantName) throws IllegalArgumentExceptionSE
constantName
- 定数の名前 IllegalArgumentExceptionSE
- 指定された値が ISOLATION_
定数の 1 つに解決できない場合、または null
である場合 setIsolationLevel(int)
, TransactionDefinition.ISOLATION_DEFAULT
public final void setIsolationLevel(int isolationLevel)
新しく開始されたトランザクションにのみ適用されるため、TransactionDefinition.PROPAGATION_REQUIRED
または TransactionDefinition.PROPAGATION_REQUIRES_NEW
で使用するために特別に設計されています。異なる分離レベルの既存のトランザクションに参加するときに分離レベルの宣言を拒否したい場合は、トランザクションマネージャーで "validateExistingTransactions" フラグを "true" に切り替えることを検討してください。
TransactionDefinition.ISOLATION_DEFAULT
以外のレベルが指定された場合、カスタム分離レベルをサポートしないトランザクションマネージャーは例外をスローすることに注意してください。
IllegalArgumentExceptionSE
- 指定された値が ISOLATION_
定数のいずれでもない場合 TransactionDefinition.ISOLATION_DEFAULT
public final int getIsolationLevel()
TransactionDefinition
this interface
で定義された ISOLATION_XXX
定数のいずれかを返さなければなりません。これらの定数は、Connection
SE の同じ定数の値と一致するように設計されています。
新しく開始されたトランザクションにのみ適用されるため、TransactionDefinition.PROPAGATION_REQUIRED
または TransactionDefinition.PROPAGATION_REQUIRES_NEW
で使用するために特別に設計されています。異なる分離レベルの既存のトランザクションに参加するときに分離レベルの宣言を拒否したい場合は、トランザクションマネージャーで "validateExistingTransactions" フラグを "true" に切り替えることを検討してください。
デフォルトは TransactionDefinition.ISOLATION_DEFAULT
です。TransactionDefinition.ISOLATION_DEFAULT
以外のレベルが指定された場合、カスタム分離レベルをサポートしないトランザクションマネージャーは例外をスローすることに注意してください。
public final void setTimeout(int timeout)
新たに開始されたトランザクションにのみ適用されるため、TransactionDefinition.PROPAGATION_REQUIRED
または TransactionDefinition.PROPAGATION_REQUIRES_NEW
での使用専用に設計されています。
タイムアウトをサポートしないトランザクションマネージャーは、TransactionDefinition.TIMEOUT_DEFAULT
以外のタイムアウトが指定された場合に例外をスローすることに注意してください。
public final int getTimeout()
TransactionDefinition
秒数または TransactionDefinition.TIMEOUT_DEFAULT
を返す必要があります。
新たに開始されたトランザクションにのみ適用されるため、TransactionDefinition.PROPAGATION_REQUIRED
または TransactionDefinition.PROPAGATION_REQUIRES_NEW
での使用専用に設計されています。
タイムアウトをサポートしないトランザクションマネージャーは、TransactionDefinition.TIMEOUT_DEFAULT
以外のタイムアウトが指定された場合に例外をスローすることに注意してください。
デフォルトは TransactionDefinition.TIMEOUT_DEFAULT
です。
TransactionDefinition
の getTimeout
public final void setReadOnly(boolean readOnly)
読み取り専用フラグは、実際のリソーストランザクション(TransactionDefinition.PROPAGATION_REQUIRED
/TransactionDefinition.PROPAGATION_REQUIRES_NEW
)によって裏付けられているか、リソースレベルで非トランザクションで動作している(TransactionDefinition.PROPAGATION_SUPPORTS
)かに関わらず、すべてのトランザクションコンテキストに適用されます。後者の場合、フラグは Hibernate Session
などのアプリケーション内の管理対象リソースにのみ適用されます。
これは、実際のトランザクションサブシステムのヒントとしてのみ機能します。 必ずしも書き込みアクセスの試行が失敗するわけではありません。読み取り専用ヒントを解釈できないトランザクションマネージャーは、読み取り専用トランザクションを要求されたときに例外をスローしません。
public final boolean isReadOnly()
TransactionDefinition
読み取り専用フラグは、実際のリソーストランザクション(TransactionDefinition.PROPAGATION_REQUIRED
/TransactionDefinition.PROPAGATION_REQUIRES_NEW
)によって裏付けられているか、リソースレベルで非トランザクションで動作している(TransactionDefinition.PROPAGATION_SUPPORTS
)かに関わらず、すべてのトランザクションコンテキストに適用されます。後者の場合、フラグは Hibernate Session
などのアプリケーション内の管理対象リソースにのみ適用されます。
これは、実際のトランザクションサブシステムのヒントとしてのみ機能します。 必ずしも書き込みアクセスの試行が失敗するわけではありません。読み取り専用ヒントを解釈できないトランザクションマネージャーは、読み取り専用トランザクションを要求されたときに例外をスローしません。
TransactionDefinition
の isReadOnly
true
(デフォルトで false
)TransactionSynchronization.beforeCommit(boolean)
, TransactionSynchronizationManager.isCurrentTransactionReadOnly()
public final void setName(StringSE name)
これは、トランザクションモニターに表示されるトランザクション名として使用されます(該当する場合)(たとえば、WebLogic's)。
@Nullable public final StringSE getName()
TransactionDefinition
null
にすることができます。これは、該当する場合、トランザクションモニターに表示されるトランザクション名として使用されます(たとえば、WebLogic's)。
Spring の宣言的トランザクションの場合、公開される名前は fully-qualified class name + "." + method name
(デフォルト)です。
TransactionDefinition
の getName
null
}TransactionAspectSupport
, TransactionSynchronizationManager.getCurrentTransactionName()
public boolean equals(@Nullable ObjectSE other)
toString()
の結果を比較します。ObjectSE
の equalsSE
toString()
public int hashCode()
toString()
のハッシュコードを返します。ObjectSE
の hashCodeSE
toString()
public StringSE toString()
形式は、toString
の結果を TransactionAttribute
型の Bean プロパティにフィードできるように、TransactionAttributeEditor
で使用される形式と一致します。
equals
および hashCode
の正しい動作のために、サブクラスでオーバーライドする必要があります。または、equals(java.lang.Object)
および hashCode()
をそれ自体でオーバーライドできます。
ObjectSE
の toStringSE
getDefinitionDescription()
, TransactionAttributeEditor
protected final StringBuilderSE getDefinitionDescription()
toString()
結果に含めるために、サブクラスで使用できます。