1. 트랜잭션 전파란?
- 트랜잭션 전파(Transaction Propagation)는 진행 중인 트랜잭션의 범위에서 새로운 트랜잭션이 시작될 때, 이 두 트랜잭션을 어떻게 처리할지 결정하는 정책입니다.
- 스프링에서는
@Transactional 애노테이션의 propagation 속성을 통해 트랜잭션 전파를 설정할 수 있습니다.
- 트랜잭션 전파(Transaction Propagation)는 스프링 프레임워크에서 제공하는 기능으로, 데이터베이스 자체에 있는 기능이 아닙니다.
- 스프링은 여러 데이터베이스 트랜잭션 관리 방식을 추상화하여 일관된 API로 제공합니다.
- 데이터베이스는 단순히 트랜잭션의 시작(BEGIN), 커밋(COMMIT), 롤백(ROLLBACK)만 알고 있습니다.
- 중첩 트랜잭션이나 트랜잭션 간 관계는 데이터베이스가 아닌 스프링이 관리합니다.
- 스프링은 TransactionManager를 사용하여 트랜잭션 상태를 추적하고 관리합니다.
- 트랜잭션 동기화 매니저(Transaction Synchronization Manager)를 통해 현재 쓰레드의 트랜잭션 정보를 유지합니다.
1.1 주요 트랜잭션 개념
1.1.1 물리적 트랜잭션 vs 논리적 트랜잭션