본문 바로가기
Spring

Spring - Transaction Propagation 속성

by devLog by Ronnie's 2021. 5. 2.

Spring - Transaction Propagation 속성

 

스프링 프레임워크 환경에서 트랜잭션에 대한 처리에 대한 전파 속성에 대해 정리해본다.

말 그대로 전파 속성이란, 현재 트랜잭션에서 다른 트랜잭션으로 이동할때 전파 속성에 따라 어떻게 처리할지 정하는 것이다.

 

전파속성에는 총 7가지 옵션들이 있고 각각을 그림과 함께 정리해본다.

 

1. REQUIRED (default)

트랜잭션이 걸려들어온다면 부모 트랜잭션에 합류하여 처리되고, 그렇지 않다면 새로운 트랜잭션을 생성해서 처리한다.

트랜잭션 옵션을 주지 않는다면 이 옵션값으로 설정되며, 대부분의 경우 REQUIRED 값으로 설정해준다.

 

2. NOT_SUPPORTED

트랜잭션이 걸려들어와도 트랜잭션 없이 실행이 된다.

 

3. Supports

트랜잭션이 걸려들어오면 그 안에서 처리되고 안걸면 트랜잭션 없이 처리.

 

4. REQUIRES_NEW

트랜잭션이 걸려들어오던 아니던 무조건 자기의 새로운 트랜잭션을 만들어서 처리함 (독립적)

 

5. MANDATORY

트랜잭션이 걸려들어오면 그 안에서 실행되며 기존 트랜잭션이 존재하지 않으면 예외를 발생시킨다.

한마디로 독립적으로 실행되면 안된다는 것.

 

6.NEVER

기존의 트랜잭션이 존재하지 않다면 없는 상태로 실행되고, 걸려들어오면 MANDATORY 설정과 반대로 예외를 발생시킨다.

 

7. NESTED

기존의 트랜잭션이 존재하면 중첩된 트랜잭션이 실행되며 기존의 트랜잭션이 존재하지 않으면 디폴트값인 REQUIRED와 동일하게 실행된다.

댓글