728x90
트랜잭션이 둘 이상 있을 때 어떻게 동작하는지 자세히 알아보고, 스프링이 제공하는 트랜잭션 전파 (propagation)라는 개념도 알아보자.
트랜잭션 전파를 이해하는 과정을 통해서 스프링 트랜잭션의 동작 원리도 더 깊이 있게 이해할 수 있을 것이다
@Slf4j
@SpringBootTest
public class BasicTxTest {
@Autowired
PlatformTransactionManager txManager;
@TestConfiguration
static class Config{
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
}
@Test
public void commit(){
log.info("트랜잭션 시작");
TransactionStatus status = txManager.getTransaction(new DefaultTransactionAttribute());
log.info("트랜잭션 커밋 시작");
txManager.commit(status);
log.info("트랜잭션 커밋 완료");
}
@Test
public void rollback(){
log.info("트랜잭션 시작");
TransactionStatus status = txManager.getTransaction(new DefaultTransactionAttribute());
log.info("트랜잭션 롤백 시작");
txManager.rollback(status);
log.info("트랜잭션 롤백 완료");
}
}
- @TestConfiguration : 해당 테스트에서 필요한 스프링 설정을 추가로 할 수 있다.
- DataSourceTransactionManager를 스프링 빈으로 등록했다. 이후 트랜잭션 매니저인 PlatformTransactionManager를 주입받으면 방금 등록한 DataSourceTransactionManager 가 주입된다
commit()
@Test
public void commit(){
log.info("트랜잭션 시작");
TransactionStatus status = txManager.getTransaction(new DefaultTransactionAttribute());
log.info("트랜잭션 커밋 시작");
txManager.commit(status);
log.info("트랜잭션 커밋 완료");
}
- txManager.getTransaction(new DefaultTransactionAttribute()) : 트랜잭션 매니저를 통해 트랜잭션을 시작(획득)한다
- txManager.commit(status) : 트랜잭션을 커밋한다.
rollback()
@Test
public void rollback(){
log.info("트랜잭션 시작");
TransactionStatus status = txManager.getTransaction(new DefaultTransactionAttribute());
log.info("트랜잭션 롤백 시작");
txManager.rollback(status);
log.info("트랜잭션 롤백 완료");
}
- txManager.getTransaction(new DefaultTransactionAttribute()) : 트랜잭션 매니저를 통해 트랜잭션을 시작(획득)한다.
- txManager.rollback(status) 트랜잭션을 롤백한다.
728x90
'스프링 DB 2편(데이터 접근 활용 기술)' 카테고리의 다른 글
| Ch10. 스프링 트랜잭션 전파(기본) - 전파 기본 & 예제 (0) | 2022.07.07 |
|---|---|
| Ch10. 스프링 트랜잭션 전파(기본) - 트랜잭션 두 번 사용 (0) | 2022.07.07 |
| Ch09. 스프링 트랜잭션 이해 - 예외와 트랜잭션 커밋, 롤백 (0) | 2022.07.06 |
| Ch09. 스프링 트랜잭션 이해 - 트랜잭션 옵션 소개 (0) | 2022.07.06 |
| Ch09. 스프링 트랜잭션 이해 - 트랜잭션 AOP 주의 사항(초기화 시점) (0) | 2022.07.06 |