스프링은 사실 REQUIRES_NEW
말고도 다른 전파 옵션을 사용한다. 기본은 REQUIRED
이다. 사실 실무에서는 이 두개 빼고는 거의 사용하지 않는다고 한다.
기존 트랜잭션이 없으면 새로 생성하고, 있으면 내부 트랜잭션으로 참여한다.
항상 새로운 트랜잭션을 생성한다. 기존 트랜잭션이 없어도 생성, 있어도 생성한다.
새로운 트랜잭션을 생성하지 않는다.
기존 트랜잭션이 없으면 없는대로 로직을 진행한다. 있으면 참여할 뿐이다.
새로운 트랜잭션을 항상 생성하지도 않고 참여하지도 않는다. 기존 트랜잭션이 있어도 참여하지 않고, 오히려 기존 트랜잭션을 대기시키고 본인 로직을 사용한다.
트랜잭션을 의무사항으로 지정한다. 기존 트랜잭션이 없으면 예외가 발생한다.
기존 트랜잭션이 없으면 IllegalTransactionStateException
예외가 발생한다.