스프링이 지원하는 트랜잭션 전파 속성은 여섯가지가 존재한다

속성은 아래와 같이 tx:method 에서 설정할 수 있으며, @Transactional 에서 propagation 엘리먼트로 지정도 가능하다

설정 가능한 속성

★REQUIRED
하나의 트랜잭션이 시작된 후 다른 트랜잭션 경계가 설정된 메소드 호출 시 같은 트랜잭션으로 묶인다
이미 시작된 트랜잭션이 없을 시 새로운 트랜잭션이 시작된다

SUPPORTS
이미 시작된 트랜잭션이 있으면 참가하고 그렇지 않으면 트랜잭션이 없는 상태에서 수행한다

MANDATORY
이미 시작된 트랜잭션이 있으면 참가하고 없으면 예외 발생

REQUIRES_NEW
항상 새로운 트랜잭션을 시작한다 이미 시작된 트랜잭션이 있으면 잠시 보류 시킨다

NOT_SUPPORTED
트랜잭션 사용 안함 이미 진행중인 트랜잭션이 있으면 보류

NEVER
트랜잭션을 사용하지 않도록 강제 이미 진행중인 트랜잭션이 있으면 에러발생

NESTED
이미 진행 중인 트랜잭션이 있으면 중첩 트랜잭션을 시작한다. 부모 트랜잭션과 자식 트랜잭션의 발생

PS. 트랜잭션의 작업결과의 노출수위를 조절하는 isolation 속성도 존재한다


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.