728x90
반응형
참조 링크의 블로그에 너무 잘 정리되어 있어서 읽어보면 될 것 같다. 요약하자면 다음과 같다.
스프링에서는,
@Transactional의 propagation 설정을 통해 트랜잭션의 전파를 설정할 수 있다.
1. REQUIRED
기본 설정은 REQUIRED이다. 트랜잭션A(부모) 내부에 트랜잭션B(자식)가 실행되는 경우, 트랜잭션A에 트랜잭션 B가 합류한다. 다시말해 커밋이나 롤백의 기준이 트랜잭션 A만 존재하는 경우와 같다.
아래는 자식 트랜잭션에 주는 속성을 소제목과 같이 바꿨을 때의 동작 방식을 설명한다.
2. REQUIRES_NEW
A, B 개별 트랜잭션으로 취급한다. 각각 커밋과 롤백이 이루어진다.
3. MANDATORY
부모에 자식이 합류한다. 다만, 부모 트랜잭션이 없으면 에러가 발생한다.
4. NESTED
부모에 자식이 nested 된다. 부모 내부에서 롤백 시, 자식의 시작지점까지만 롤백되는 방식이다. 커밋은 부모 트랜잭션이 커밋될때 함께 커밋된다. 부모 트랜잭션이 없다면 새로운 트랜잭션을 생성한다.
5. NEVER
트랜잭션을 생성하지 않는다. 만약 부모 트랜잭션이 존재하면 예외를 발생시킨다.
6. SUPPORTS
부모가 있다면 합류하고, 부모가 없다면 트랜잭션을 생성하지 않는다.
7. NOT_SUPPORTED
부모 트랜잭션이 있다면 보류시킨다. 부모 트랜잭션이 없으면 트랜잭션을 생성하지 않는다.
다음은 REQUIRES_NEW의 참조 블로그 예시 그림이다.
참조
1. 개발자 EricJoeng님의 블로그
728x90
반응형
'Programming-[Backend] > Spring' 카테고리의 다른 글
[TIL][작성중]RestTemplate 사용하기 (0) | 2022.02.07 |
---|---|
[TIL][링크] 타임리프 부트스트랩 클래스 표 - grid options (0) | 2022.02.06 |
[TIL][Thymeleaf] String null 처리 : #string.defaultString (0) | 2021.10.13 |
[스프링 웹MVC-2] 21. 업로드, 다운로드 기능 구현 예제 (0) | 2021.09.22 |
[스프링 웹MVC-2] 20. 파일 업로드 (0) | 2021.09.21 |