H - リソースホルダーの型 K - リソースキー型 public abstract class ResourceHolderSynchronization<H extends ResourceHolder,K> extends ObjectSE implements TransactionSynchronization
STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWNHIGHEST_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, waitSEgetOrderpublic ResourceHolderSynchronization(H resourceHolder, K resourceKey)
resourceHolder - 管理する ResourceHolderresourceKey - ResourceHolder をバインドするキー TransactionSynchronizationManager.bindResource(java.lang.Object, java.lang.Object)public void suspend()
TransactionSynchronizationpublic void resume()
TransactionSynchronizationpublic void flush()
TransactionSynchronizationFlushableSE の flushSE TransactionSynchronization の flush TransactionStatus.flush()public void beforeCommit(boolean readOnly)
TransactionSynchronizationこのコールバックは、トランザクションが実際にコミットされることを意味するものではありません。このメソッドが呼び出された後でも、ロールバックの決定が発生する可能性があります。このコールバックは、SQL ステートメントをデータベースにフラッシュするなど、コミットがまだ発生する可能性がある場合にのみ関連する作業を実行することを目的としています。
例外はコミット呼び出し元に伝播され、トランザクションのロールバックが発生することに注意してください。
TransactionSynchronization の beforeCommit readOnly - トランザクションが読み取り専用トランザクションとして定義されているかどうか TransactionSynchronization.beforeCompletion()public void beforeCompletion()
TransactionSynchronizationbeforeCommit が例外をスローした場合でも、このメソッドは 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 がバインドされたキー