クラス TransactionSynchronizationManager
上書きせずにキーごとに 1 つのリソースをサポートします。つまり、同じキーに新しいリソースを設定する前にリソースを削除する必要があります。同期がアクティブな場合、トランザクション同期のリストをサポートします。
 リソース管理コードは、スレッドにバインドされたリソースをチェックする必要があります。getResource を介した JDBC 接続または Hibernate セッション。このようなコードは通常、リソースをスレッドにバインドすることを想定していません。これはトランザクションマネージャーの責任であるためです。もう 1 つのオプションは、トランザクション同期がアクティブな場合に、最初の使用に遅延バインドして、任意の数のリソースにまたがるトランザクションを実行することです。
 トランザクション同期は、initSynchronization() および clearSynchronization() を介してトランザクションマネージャーによってアクティブ化および非アクティブ化される必要があります。これは AbstractPlatformTransactionManager によって、JtaTransactionManager や DataSourceTransactionManager などのすべての標準 Spring トランザクションマネージャーによって自動的にサポートされます。
 リソース管理コードは、このマネージャーがアクティブな場合にのみ同期を登録する必要があります。これは、isSynchronizationActive() を介して確認できます。それ以外の場合は、すぐにリソースのクリーンアップを実行する必要があります。トランザクションの同期がアクティブでない場合、現在のトランザクションがないか、トランザクションマネージャーがトランザクションの同期をサポートしていません。
たとえば、同期は、JTA トランザクション内で常に同じリソースを返すために使用されます。特定の DataSource または SessionFactory の JDBC 接続または Hibernate セッション。
- 導入:
- 02.06.2003
- 作成者:
- Juergen Hoeller
- 関連事項:
- isSynchronizationActive()
- registerSynchronization(org.springframework.transaction.support.TransactionSynchronization)
- TransactionSynchronization
- AbstractPlatformTransactionManager.setTransactionSynchronization(int)
- JtaTransactionManager
- DataSourceTransactionManager
- DataSourceUtils.getConnection(javax.sql.DataSource)
 
- コンストラクターの概要コンストラクター
- メソッドのサマリー修飾子と型メソッド説明- static void- bindResource- (ObjectSE key, ObjectSE value) 指定されたキーの指定されたリソースを現在のスレッドにバインドします。- static void- clear()現在のスレッドのトランザクション同期状態全体を登録します。登録された同期とさまざまなトランザクション特性です。- static void現在のスレッドのトランザクション同期を非アクティブ化します。- static IntegerSE存在する場合、現在のトランザクションの分離レベルを返します。- static StringSE現在のトランザクションの名前、または何も設定されていない場合は- nullを返します。- static ObjectSE- getResource- (ObjectSE key) 現在のスレッドにバインドされている特定のキーのリソースを取得します。現在のスレッドにバインドされているすべてのリソースを返します。- static ListSE<TransactionSynchronization>現在のスレッドに登録されているすべての同期の変更不可能なスナップショットリストを返します。- static boolean- hasResource- (ObjectSE key) 現在のスレッドにバインドされた特定のキーのリソースがあるかどうかを確認します。- static void現在のスレッドのトランザクション同期をアクティブにします。- static boolean現在アクティブな実際のトランザクションがあるかどうかを返します。- static boolean現在のトランザクションが読み取り専用としてマークされているかどうかを返します。- static boolean現在のスレッドでトランザクション同期がアクティブな場合に返されます。- static void- registerSynchronization- (TransactionSynchronization synchronization) 現在のスレッドの新しいトランザクション同期を登録します。- static void- setActualTransactionActive- (boolean active) 現在アクティブな実際のトランザクションがあるかどうかを公開します。- static void- setCurrentTransactionIsolationLevel- (IntegerSE isolationLevel) 現在のトランザクションの分離レベルを公開します。- static void存在する場合、現在のトランザクションの名前を公開します。- static void- setCurrentTransactionReadOnly- (boolean readOnly) 現在のトランザクションの読み取り専用フラグを公開します。- static ObjectSE- unbindResource- (ObjectSE key) 現在のスレッドから指定されたキーのリソースをアンバインドします。- static ObjectSE現在のスレッドから指定されたキーのリソースをアンバインドします。
- コンストラクターの詳細- TransactionSynchronizationManagerpublic TransactionSynchronizationManager()
 
- メソッドの詳細- getResourceMap現在のスレッドにバインドされているすべてのリソースを返します。- 主にデバッグを目的としています。リソースマネージャーは、関心のある特定のリソースキーに対して常に - hasResourceを呼び出す必要があります。- 戻り値:
- リソースキー(通常はリソースファクトリ)とリソース値(通常はアクティブなリソースオブジェクト)を持つ Map、または現在バインドされているリソースがない場合は空の Map
- 関連事項:
 
- hasResource現在のスレッドにバインドされた特定のキーのリソースがあるかどうかを確認します。- パラメーター:
- key- チェックするキー (通常、リソースファクトリ)
- 戻り値:
- 現在のスレッドにバインドされた値がある場合
- 関連事項:
 
- getResource現在のスレッドにバインドされている特定のキーのリソースを取得します。- パラメーター:
- key- チェックするキー (通常、リソースファクトリ)
- 戻り値:
-  現在のスレッド(通常はアクティブなリソースオブジェクト)にバインドされた値、または存在しない場合は null
- 関連事項:
 
- bindResource指定されたキーの指定されたリソースを現在のスレッドにバインドします。- パラメーター:
- key- 値をバインドするキー (通常、リソースファクトリ)
- value- バインドする値 (通常、アクティブなリソースオブジェクト)
- 例外:
- IllegalStateExceptionSE- すでにスレッドにバインドされている値がある場合
- 関連事項:
 
- unbindResource現在のスレッドから指定されたキーのリソースをアンバインドします。- パラメーター:
- key- バインドを解除するキー (通常、リソースファクトリ)
- 戻り値:
- 以前にバインドされた値 (通常、アクティブなリソースオブジェクト)
- 例外:
- IllegalStateExceptionSE- スレッドにバインドされた値がない場合
- 関連事項:
 
- unbindResourceIfPossible現在のスレッドから指定されたキーのリソースをアンバインドします。- パラメーター:
- key- バインドを解除するキー (通常、リソースファクトリ)
- 戻り値:
-  以前にバインドされた値、またはバインドされていない場合は null
 
- isSynchronizationActivepublic static boolean isSynchronizationActive()現在のスレッドでトランザクション同期がアクティブな場合に返されます。不要なインスタンスの作成を回避するために、登録前に呼び出すことができます。
- initSynchronization現在のスレッドのトランザクション同期をアクティブにします。トランザクションの開始時にトランザクションマネージャーによって呼び出されます。- 例外:
- IllegalStateExceptionSE- 同期がすでにアクティブな場合
 
- registerSynchronizationpublic static void registerSynchronization- (TransactionSynchronization synchronization) throws IllegalStateExceptionSE 現在のスレッドの新しいトランザクション同期を登録します。通常、リソース管理コードによって呼び出されます。- 同期により - Orderedインターフェースを実装できることに注意してください。それらは、オーダー値に応じた順序で実行されます(ある場合)。- パラメーター:
- synchronization- 登録する同期オブジェクト
- 例外:
- IllegalStateExceptionSE- トランザクション同期がアクティブでない場合
- 関連事項:
 
- getSynchronizationspublic static ListSE<TransactionSynchronization> getSynchronizations() throws IllegalStateExceptionSE現在のスレッドに登録されているすべての同期の変更不可能なスナップショットリストを返します。- 戻り値:
- TransactionSynchronization インスタンスの変更不可能なリスト
- 例外:
- IllegalStateExceptionSE- 同期がアクティブでない場合
- 関連事項:
 
- clearSynchronization現在のスレッドのトランザクション同期を非アクティブ化します。トランザクションのクリーンアップ時にトランザクションマネージャーによって呼び出されます。- 例外:
- IllegalStateExceptionSE- 同期がアクティブでない場合
 
- setCurrentTransactionName存在する場合、現在のトランザクションの名前を公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- name- トランザクションの名前、またはそれをリセットする- null
- 関連事項:
 
- getCurrentTransactionName現在のトランザクションの名前、または何も設定されていない場合は- nullを返します。特定の名前付きトランザクションのフェッチ戦略を最適化するなど、ユースケースごとの最適化のためにリソース管理コードによって呼び出されます。
- setCurrentTransactionReadOnlypublic static void setCurrentTransactionReadOnly- (boolean readOnly) 現在のトランザクションの読み取り専用フラグを公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- readOnly- 現在のトランザクションを読み取り専用としてマークする- true。このような読み取り専用マーカーをリセットする- false
- 関連事項:
 
- isCurrentTransactionReadOnlypublic static boolean isCurrentTransactionReadOnly()現在のトランザクションが読み取り専用としてマークされているかどうかを返します。新しく作成されたリソース(Hibernate セッションなど)を準備するときに、リソース管理コードによって呼び出されます。- トランザクション同期は、 - beforeCommitコールバックの引数として読み取り専用フラグを受け取り、コミット時の変更検出を抑制できることに注意してください。現在のメソッドは、たとえば Hibernate セッションのフラッシュモードを "FlushMode.MANUAL" に事前に設定するなど、以前の読み取り専用チェックに使用することを目的としています。
- setCurrentTransactionIsolationLevel現在のトランザクションの分離レベルを公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- isolationLevel- JDBC 接続定数(対応する Spring TransactionDefinition 定数に相当)に従って公開する分離レベル、またはリセットする- null
- 関連事項:
- Connection.TRANSACTION_READ_UNCOMMITTEDSE
- Connection.TRANSACTION_READ_COMMITTEDSE
- Connection.TRANSACTION_REPEATABLE_READSE
- Connection.TRANSACTION_SERIALIZABLESE
- TransactionDefinition.ISOLATION_READ_UNCOMMITTED
- TransactionDefinition.ISOLATION_READ_COMMITTED
- TransactionDefinition.ISOLATION_REPEATABLE_READ
- TransactionDefinition.ISOLATION_SERIALIZABLE
- TransactionDefinition.getIsolationLevel()
 
 
- getCurrentTransactionIsolationLevel現在のトランザクションの分離レベルがある場合は、それを返します。新しく作成されたリソース(JDBC 接続など)を準備するときに、リソース管理コードによって呼び出されます。- 戻り値:
- JDBC 接続定数(対応する Spring TransactionDefinition 定数に相当)による、現在公開されている分離レベル。存在しない場合は null
- 関連事項:
- Connection.TRANSACTION_READ_UNCOMMITTEDSE
- Connection.TRANSACTION_READ_COMMITTEDSE
- Connection.TRANSACTION_REPEATABLE_READSE
- Connection.TRANSACTION_SERIALIZABLESE
- TransactionDefinition.ISOLATION_READ_UNCOMMITTED
- TransactionDefinition.ISOLATION_READ_COMMITTED
- TransactionDefinition.ISOLATION_REPEATABLE_READ
- TransactionDefinition.ISOLATION_SERIALIZABLE
- TransactionDefinition.getIsolationLevel()
 
 
- setActualTransactionActivepublic static void setActualTransactionActive- (boolean active) 現在アクティブな実際のトランザクションがあるかどうかを公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- active- 現在のスレッドを実際のトランザクションに関連付けられているものとしてマークする- true。そのマーカーをリセットする- false
 
- isActualTransactionActivepublic static boolean isActualTransactionActive()現在アクティブな実際のトランザクションがあるかどうかを返します。これは、現在のスレッドがアクティブなトランザクション同期だけでなく実際のトランザクションに関連付けられているかどうかを示します。- アクティブなトランザクション同期 (バッキングリソーストランザクションの有無にかかわらず、PROPAGATION_SUPPORTS 上でも) とアクティブな実際のトランザクション (バッキングリソーストランザクションあり、PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW など) を区別するリソース管理コードによって呼び出されます。 
- clearpublic static void clear()現在のスレッドのトランザクション同期状態全体を登録します。登録された同期とさまざまなトランザクション特性です。