public class SpringSessionSynchronization extends ObjectSE implements TransactionSynchronization, Ordered
STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWN
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
SpringSessionSynchronization(SessionHolder sessionHolder, SessionFactory sessionFactory) |
SpringSessionSynchronization(SessionHolder sessionHolder, SessionFactory sessionFactory, boolean newSession) |
修飾子と型 | メソッドと説明 |
---|---|
void | afterCommit() トランザクションのコミット後に呼び出されます。 |
void | afterCompletion(int status) トランザクションのコミット / ロールバック後に呼び出されます。 |
void | beforeCommit(boolean readOnly) トランザクションのコミット前( "beforeCompletion" の前)に呼び出されます。 |
void | beforeCompletion() トランザクションのコミット / ロールバックの前に呼び出されます。 |
void | flush() 該当する場合は、基になるセッションをデータストアにフラッシュします(例: Hibernate/JPA セッション)。 |
int | getOrder() このオブジェクトの順序値を取得します。 |
void | resume() この同期を再開します。 |
void | suspend() この同期を一時停止します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public SpringSessionSynchronization(SessionHolder sessionHolder, SessionFactory sessionFactory)
public SpringSessionSynchronization(SessionHolder sessionHolder, SessionFactory sessionFactory, boolean newSession)
public int getOrder()
Ordered
値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup
の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered
の getOrder
Ordered.HIGHEST_PRECEDENCE
, Ordered.LOWEST_PRECEDENCE
public void suspend()
TransactionSynchronization
public void resume()
TransactionSynchronization
public void flush()
TransactionSynchronization
FlushableSE
の flushSE
TransactionSynchronization
の flush
TransactionStatus.flush()
public void beforeCommit(boolean readOnly) throws DataAccessException
TransactionSynchronization
このコールバックは、トランザクションが実際にコミットされることを意味するものではありません。このメソッドが呼び出された後でも、ロールバックの決定が発生する可能性があります。このコールバックは、SQL ステートメントをデータベースにフラッシュするなど、コミットがまだ発生する可能性がある場合にのみ関連する作業を実行することを目的としています。
例外はコミット呼び出し元に伝播され、トランザクションのロールバックが発生することに注意してください。
TransactionSynchronization
の beforeCommit
readOnly
- トランザクションが読み取り専用トランザクションとして定義されているかどうか DataAccessException
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()