스프링 트랜잭션 전파8 - 다양한 전파 옵션

학습 페이지

스프링은 사실 REQUIRES_NEW 말고도 다른 전파 옵션을 사용한다. 기본은 REQUIRED 이다. 사실 실무에서는 이 두개 빼고는 거의 사용하지 않는다고 한다.

REQUIRED

기존 트랜잭션이 없으면 새로 생성하고, 있으면 내부 트랜잭션으로 참여한다.

REQUIRES_NEW

항상 새로운 트랜잭션을 생성한다. 기존 트랜잭션이 없어도 생성, 있어도 생성한다.

SUPPORT

새로운 트랜잭션을 생성하지 않는다.

기존 트랜잭션이 없으면 없는대로 로직을 진행한다. 있으면 참여할 뿐이다.

NOT_SUPPORT

새로운 트랜잭션을 항상 생성하지도 않고 참여하지도 않는다. 기존 트랜잭션이 있어도 참여하지 않고, 오히려 기존 트랜잭션을 대기시키고 본인 로직을 사용한다.

MANDATORY

트랜잭션을 의무사항으로 지정한다. 기존 트랜잭션이 없으면 예외가 발생한다.

기존 트랜잭션이 없으면 IllegalTransactionStateException 예외가 발생한다.