H
- リソースホルダーの型 K
- リソースキー型 public abstract class ResourceHolderSynchronization<H extends ResourceHolder,K> extends ObjectSE implements TransactionSynchronization
STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWN
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
ResourceHolderSynchronization(H resourceHolder, K resourceKey) 指定されたホルダーの新しい ResourceHolderSynchronization を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | afterCommit() トランザクションのコミット後に呼び出されます。 |
void | afterCompletion(int status) トランザクションのコミット / ロールバック後に呼び出されます。 |
void | beforeCommit(boolean readOnly) トランザクションのコミット前( "beforeCompletion" の前)に呼び出されます。 |
void | beforeCompletion() トランザクションのコミット / ロールバックの前に呼び出されます。 |
protected void | cleanupResource(H resourceHolder, K resourceKey, boolean committed) 指定されたリソース(スレッドにバインドされたまま)に対してクリーンアップを実行します。 |
void | flush() 該当する場合は、基になるセッションをデータストアにフラッシュします(例: Hibernate/JPA セッション)。 |
protected void | flushResource(H resourceHolder) 指定されたリソースホルダーのコールバックをフラッシュします。 |
protected void | processResourceAfterCommit(H resourceHolder) 指定されたリソースホルダーのコミット後のコールバック。 |
protected void | releaseResource(H resourceHolder, K resourceKey) 指定されたリソースを解放します(スレッドからバインド解除された後)。 |
void | resume() この同期を再開します。 |
protected boolean | shouldReleaseAfterCompletion(H resourceHolder) トランザクションの補完後にこの所有者のリソースを解放する必要があるかどうかを返します( true )。 |
protected boolean | shouldReleaseBeforeCompletion() この所有者のリソースをトランザクション完了前( true )に解放するか、トランザクション完了後(false )に解放するかを返します。 |
protected boolean | shouldUnbindAtCompletion() このホルダーが完了時にバインド解除される(または、トランザクション後にスレッドにバインドされたままにする必要がある)かどうかを返します。 |
void | suspend() この同期を一時停止します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
getOrder
public ResourceHolderSynchronization(H resourceHolder, K resourceKey)
resourceHolder
- 管理する ResourceHolderresourceKey
- ResourceHolder をバインドするキー TransactionSynchronizationManager.bindResource(java.lang.Object, java.lang.Object)
public void suspend()
TransactionSynchronization
public void resume()
TransactionSynchronization
public void flush()
TransactionSynchronization
FlushableSE
の flushSE
TransactionSynchronization
の flush
TransactionStatus.flush()
public void beforeCommit(boolean readOnly)
TransactionSynchronization
このコールバックは、トランザクションが実際にコミットされることを意味するものではありません。このメソッドが呼び出された後でも、ロールバックの決定が発生する可能性があります。このコールバックは、SQL ステートメントをデータベースにフラッシュするなど、コミットがまだ発生する可能性がある場合にのみ関連する作業を実行することを目的としています。
例外はコミット呼び出し元に伝播され、トランザクションのロールバックが発生することに注意してください。
TransactionSynchronization
の beforeCommit
readOnly
- トランザクションが読み取り専用トランザクションとして定義されているかどうか TransactionSynchronization.beforeCompletion()
public void beforeCompletion()
TransactionSynchronization
beforeCommit
が例外をスローした場合でも、このメソッドは beforeCommit
の後に呼び出されます。このコールバックにより、トランザクションの補完前にリソースを閉じることができます。
public void afterCommit()
TransactionSynchronization
できます。確認メッセージやメールなど、メイントランザクションが正常にコミットされた後に実行されるはずの操作をさらにコミットします。
注 : トランザクションはすでにコミットされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には PROPAGATION_REQUIRES_NEW
を使用します。
TransactionSynchronization
の afterCommit
public void afterCompletion(int status)
TransactionSynchronization
注 : トランザクションはすでにコミットまたはロールバックされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には PROPAGATION_REQUIRES_NEW
を使用します。
TransactionSynchronization
の afterCompletion
status
- STATUS_*
定数に従った完了ステータス TransactionSynchronization.STATUS_COMMITTED
, TransactionSynchronization.STATUS_ROLLED_BACK
, TransactionSynchronization.STATUS_UNKNOWN
, TransactionSynchronization.beforeCompletion()
protected boolean shouldUnbindAtCompletion()
デフォルトの実装は true
を返します。
protected boolean shouldReleaseBeforeCompletion()
true
)に解放するか、トランザクション完了後(false
)に解放するかを返します。 リソースが解放されるのは、それらがスレッド(shouldUnbindAtCompletion()
)からバインド解除されている場合のみであることに注意してください。
デフォルトの実装は true
を返します。
protected boolean shouldReleaseAfterCompletion(H resourceHolder)
true
)。 デフォルトの実装は !shouldReleaseBeforeCompletion()
を返し、完了前に試行が行われなかった場合は完了後に解放します。
protected void flushResource(H resourceHolder)
resourceHolder
- フラッシュするリソースホルダー protected void processResourceAfterCommit(H resourceHolder)
shouldReleaseBeforeCompletion()
)。resourceHolder
- 処理するリソースホルダー protected void releaseResource(H resourceHolder, K resourceKey)
resourceHolder
- 処理するリソースホルダー resourceKey
- ResourceHolder がバインドされたキー