책에서 소개한 required, requires_new, not_supported 이외에도 몇가지 옵션이 더 있어 공유합니다~
REQUIRED (기본값) : 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 새로운 트랜잭션을 생성
REQUIRES_NEW : 부모 트랜잭션을 무시하고 무조건 새로운 트랜잭션이 생성
SUPPORT : 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 트랜잭션 보장 x
MANDATORY : 부모 트랜잭션 내에서 실행되며 부모 트랜잭션이 없을 경우 예외가 발생
NOT_SUPPORT : 트랜잭션을 보장하지 않게 실행되며, 부모 트랜잭션 내에서 실행될 경우 부모 트랜잭션을 중지 시키고 작업을 수행한다.
NEVER : 트랜잭션을 보장하지 않게 실행되며, 부모 트랜잭션이 존재한다면 예외가 발생
NESTED : 해당 메서드가 부모 트랜잭션에서 진행될 경우 별개로 커밋되거나 롤백될 수 있음. 둘러싼 트랜잭션이 없을 경우 REQUIRED와 동일하게 작동. requires_new와는 다르게 새 트랜잭션을 생성하지 않고 savepoint를 활용해서 트랜잭션을 보장한다.
책에서 소개한 required, requires_new, not_supported 이외에도 몇가지 옵션이 더 있어 공유합니다~
참고 참고 2