public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean
中心的な方法は execute(org.springframework.transaction.support.TransactionCallback<T>)
で、TransactionCallback
インターフェースを実装するトランザクションコードをサポートしています。このテンプレートは、TransactionCallback 実装も呼び出し元のコードも明示的にトランザクションを処理する必要がないように、トランザクションのライフサイクルと起こり得る例外を処理します。
典型的な使用箇所: JDBC DataSources などのリソースを使用する低レベルのデータアクセスオブジェクトを書き込むことができますが、それ自体はトランザクション対応ではありません。代わりに、このクラスを利用する高レベルのアプリケーションサービスによって処理されるトランザクションに暗黙的に参加し、内部クラスのコールバックオブジェクトを介して低レベルのサービスを呼び出すことができます。
トランザクションマネージャー参照で直接インスタンス化することにより、サービス実装内で使用できます。または、アプリケーションコンテキストで準備し、Bean 参照としてサービスに渡すことができます。注: アプリケーションコンテキストでは、トランザクションマネージャーは常に Bean として構成する必要があります。最初のケースではサービスに直接指定し、2 番目のケースでは準備したテンプレートに指定します。
コンテキスト定義での便利な構成のために、名前による伝播動作と分離レベルの設定をサポートします。
修飾子と型 | フィールドと説明 |
---|---|
protected Log | logger サブクラスで利用可能なロガー。 |
PREFIX_ISOLATION, PREFIX_PROPAGATION, PREFIX_TIMEOUT, 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
コンストラクターと説明 |
---|
TransactionTemplate() Bean 用の新しい TransactionTemplate を作成します。 |
TransactionTemplate(PlatformTransactionManager transactionManager) 指定されたトランザクションマネージャーを使用して、新しい TransactionTemplate を構築します。 |
TransactionTemplate(PlatformTransactionManager transactionManager, TransactionDefinition transactionDefinition) 指定されたトランザクション定義からデフォルト設定を取得し、指定されたトランザクションマネージャーを使用して新しい TransactionTemplate を構築します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
boolean | equals(ObjectSE other) この実装は、 toString() の結果を比較します。 |
<T> T | execute(TransactionCallback<T> action) トランザクション内で、指定されたコールバックオブジェクトによって指定されたアクションを実行します。 |
PlatformTransactionManager | getTransactionManager() 使用するトランザクション管理戦略を返します。 |
void | setTransactionManager(PlatformTransactionManager transactionManager) 使用するトランザクション管理戦略を設定します。 |
getDefinitionDescription, getIsolationLevel, getName, getPropagationBehavior, getTimeout, hashCode, isReadOnly, setIsolationLevel, setIsolationLevelName, setName, setPropagationBehavior, setPropagationBehaviorName, setReadOnly, setTimeout, toString
cloneSE, finalizeSE, getClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
protected final Log logger
public TransactionTemplate()
メモ: PlatformTransactionManager は、execute
呼び出しの前に設定する必要があります。
public TransactionTemplate(PlatformTransactionManager transactionManager)
transactionManager
- 使用するトランザクション管理戦略 public TransactionTemplate(PlatformTransactionManager transactionManager, TransactionDefinition transactionDefinition)
transactionManager
- 使用するトランザクション管理戦略 transactionDefinition
- デフォルト設定のコピー元のトランザクション定義。ローカルプロパティは、値を変更するように設定できます。public void setTransactionManager(@Nullable PlatformTransactionManager transactionManager)
@Nullable public PlatformTransactionManager getTransactionManager()
public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
@Nullable public <T> T execute(TransactionCallback<T> action) throws TransactionException
TransactionOperations
トランザクション内で作成された結果オブジェクト、つまりドメインオブジェクトまたはドメインオブジェクトのコレクションを返すことができます。コールバックによってスローされた RuntimeException は、ロールバックを強制する致命的な例外として扱われます。このような例外は、テンプレートの呼び出し元に伝播されます。
TransactionOperations
の execute
action
- トランザクションアクションを指定するコールバックオブジェクト null
TransactionException
- 初期化、ロールバック、システムエラーの場合 public boolean equals(ObjectSE other)
DefaultTransactionDefinition
toString()
の結果を比較します。DefaultTransactionDefinition
の equals
DefaultTransactionDefinition.toString()