@Test
void inner_rollback_requires_new() {
log.info("외부 트랜잭션 시작");
TransactionStatus outer = txManager.getTransaction(new DefaultTransactionDefinition());
log.info("outer.isNewTransaction()={}", outer.isNewTransaction());
log.info("내부 트랜잭션 시작");
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setPropagationBehavior(PROPAGATION_REQUIRES_NEW);
TransactionStatus inner = txManager.getTransaction(definition);
log.info("inner.isNewTransaction()={}", inner.isNewTransaction());
log.info("내부 트랜잭션 롤백");
txManager.rollback(inner);
log.info("외부 트랜잭션 커밋");
txManager.commit(outer);
}
// 실행 로그
hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 시작
DataSourceTransactionManager : Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
DataSourceTransactionManager : Acquired Connection [HikariProxyConnection@1454670179 wrapping conn0: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA] for JDBC transaction
DataSourceTransactionManager : Switching JDBC Connection [HikariProxyConnection@1454670179 wrapping conn0: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA] to manual commit
hello.springtx.propagation.BasicTxTest : outer.isNewTransaction()=true
hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 시작
DataSourceTransactionManager : Suspending current transaction, creating new transaction with name [null]
DataSourceTransactionManager : Acquired Connection [HikariProxyConnection@982532336 wrapping conn1: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA] for JDBC transaction
DataSourceTransactionManager : Switching JDBC Connection [HikariProxyConnection@982532336 wrapping conn1: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA] to manual commit
hello.springtx.propagation.BasicTxTest : inner.isNewTransaction()=true
hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 롤백
DataSourceTransactionManager : Initiating transaction rollback
DataSourceTransactionManager : Rolling back JDBC transaction on Connection [HikariProxyConnection@982532336 wrapping conn1: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA]
DataSourceTransactionManager : Releasing JDBC Connection [HikariProxyConnection@982532336 wrapping conn1: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA] after transaction
DataSourceTransactionManager : Resuming suspended transaction after completion of inner transaction
hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 커밋
DataSourceTransactionManager : Initiating transaction commit
DataSourceTransactionManager : Committing JDBC transaction on Connection [HikariProxyConnection@1454670179 wrapping conn0: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA]
DataSourceTransactionManager : Releasing JDBC Connection [HikariProxyConnection@1454670179 wrapping conn0: url=jdbc:h2:mem:272a5b64-9a9d-499f-8373-7680da60f6f6 user=SA] after transaction