🫠spring에서
@Transaction
을 사용하다 보면 같은 트랜잭션인지 궁금할 때가 있습니다. 그럴때는 아래와 같은 방법을 사용하면 됩니다.
(기본적으로 트랜잭션에 관하여 알고 있어야 아래 메소드들이 의미하는 바를 알 수 있습니다.)
// 현재 트랜잭션 여부 확인
boolean inTransaction = TransactionSynchronizationManager.isActualTransactionActive();
// 현재 트랜잭션의 이름 확인
String transactionName = TransactionSynchronizationManager.getCurrentTransactionName();
// 현재 트랜잭션의 상태 확인
Object transactionStatus = TransactionSynchronizationManager.getCurrentTransactionStatus();
🧐
TransactionSynchronizationManager
를 통해 행당 트랜잭션이 같은 트랜잭션인지 현재 상태는 어떤지를 확인 할 수 있습니다.
isActualTransactionActive()
를 통해 현재 활성화 상태인지를 확인 할 수 있으며getCurrentTransactionName()
를 통해 현재 트랜잭션의 이름을 확인 할 수 있습니다.
TransactionAspectSupport.currentTransactionStatus()
를 통해서는 해당 트랜잭션에 관한 부가정보를 얻을 수 있습니다.
// 트랜잭션 롤백
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// 트랜잭션 커밋
TransactionAspectSupport.currentTransactionStatus().flush();
// 새로운 트랜잭션 확인
TransactionAspectSupport.currentTransactionStatus().isNewTransaction()
🫠이 외에도 다양한 메소드들이 존재하며 이를 통해 트랜잭션에 관한 정보들을 얻을 수 있습니다.