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_MARKERISOLATION_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() 指定されたすべての Bean プロパティを設定した(そして BeanFactoryAware と ApplicationContextAware を満たした)後に BeanFactory によって呼び出されます。 |
<T> T | execute(TransactionCallback<T> action) トランザクション内で、指定されたコールバックオブジェクトによって指定されたアクションを実行します。 |
PlatformTransactionManager | getTransactionManager() 使用するトランザクション管理戦略を返します。 |
void | setTransactionManager(PlatformTransactionManager transactionManager) 使用するトランザクション管理戦略を設定します。 |
equals, getDefinitionDescription, getIsolationLevel, getName, getPropagationBehavior, getTimeout, hashCode, isReadOnly, setIsolationLevel, setIsolationLevelName, setName, setPropagationBehavior, setPropagationBehaviorName, setReadOnly, setTimeout, toStringcloneSE, finalizeSE, getClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEprotected 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このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されている場合にのみ可能な初期化を実行し、設定ミスの場合に例外をスローできます。
InitializingBean の afterPropertiesSet @Nullable public <T> T execute(TransactionCallback<T> action) throws TransactionException
TransactionOperationsトランザクション内で作成された結果オブジェクト、つまりドメインオブジェクトまたはドメインオブジェクトのコレクションを返すことができます。コールバックによってスローされた RuntimeException は、ロールバックを強制する致命的な例外として扱われます。このような例外は、テンプレートの呼び出し元に伝播されます。
TransactionOperations の execute action - トランザクションアクションを指定するコールバックオブジェクト null TransactionException - 初期化、ロールバック、システムエラーの場合