트랜잭션 전파에 대해 설명해 주세요.

  • 트랜잭션 전파는 트랜잭션이 진행중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것이다.

  • 처음 시작된 외부 트랜잭션이 끝나기 전에 내부 트랜잭션이 수행되면, 스프링은 트랜잭션 각각을 논리 트랜잭션으로 보고 두 개 이상의 논리 트랜잭션을 하나의 물리 트랜잭션으로 본다.

  • 모든 논리 트랜잭션이 커밋되어야 물리 트랜잭션이 커밋되고, 하나의 논리 트랜잭션이라도 롤백되면 물리 트랜잭션은 롤백된다.

다양한 트랜잭션 전파 옵션

옵션 ↓ / 기존 트랜잭션 →
있음
없음

REQUIRED

기존 트랜잭션 참여

새 트랜잭션 생성

REQUIRED_NEW

새 트랜잭션 생성

새 트랜잭션 생성

SUPPORT

기존 트랜잭션 참여

트랜잭션 없이 진행

NOT_SUPPORT

트랜잭션 없이 진행(기존 트랜잭션 보류)

트랜잭션 없이 진행

MANDATORY

기존 트랜잭션 참여

예외 발생

NEVER

예외 발생

트랜잭션 없이 진행

NESTED

중첩 트랜잭션 생성

새 트랜잭션 생성

  • 디폴트는 REQUIRED 이며 가장 많이 사용한다.

Last updated