트랜잭션 전파에 대해 설명해 주세요.
트랜잭션 전파는 트랜잭션이 진행중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것이다.
처음 시작된 외부 트랜잭션이 끝나기 전에 내부 트랜잭션이 수행되면, 스프링은 트랜잭션 각각을 논리 트랜잭션으로 보고 두 개 이상의 논리 트랜잭션을 하나의 물리 트랜잭션으로 본다.
모든 논리 트랜잭션이 커밋되어야 물리 트랜잭션이 커밋되고, 하나의 논리 트랜잭션이라도 롤백되면 물리 트랜잭션은 롤백된다.
다양한 트랜잭션 전파 옵션
옵션 ↓ / 기존 트랜잭션 →
있음
없음
REQUIRED
기존 트랜잭션 참여
새 트랜잭션 생성
REQUIRED_NEW
새 트랜잭션 생성
새 트랜잭션 생성
SUPPORT
기존 트랜잭션 참여
트랜잭션 없이 진행
NOT_SUPPORT
트랜잭션 없이 진행(기존 트랜잭션 보류)
트랜잭션 없이 진행
MANDATORY
기존 트랜잭션 참여
예외 발생
NEVER
예외 발생
트랜잭션 없이 진행
NESTED
중첩 트랜잭션 생성
새 트랜잭션 생성
디폴트는
REQUIRED이며 가장 많이 사용한다.
Last updated