반응형

required 2

[Spring 공식 문서 기반] Transaction 5. REQUIRED는 왜 기본값일까

4편에서는 트랜잭션이“프록시 구현의 결과가 아니라, 비즈니스 유스케이스를 표현하기 위한 메서드 경계”로 설계되었다는 점을 살펴봤습니다.이제 자연스럽게 다음 질문으로 이어집니다.트랜잭션 전파(Propagation)는 왜 이렇게 많은 옵션을 가질까?그리고 그중 왜 REQUIRED가 기본값일까?이 질문에 답하지 못하면,REQUIRES_NEW를 남용하거나의도치 않은 커밋/롤백을 만들고트랜잭션 구조를 복잡하게 만듭니다1. 전파(Propagation)는 무엇을 결정하는 옵션일까Propagation은“이미 트랜잭션이 존재할 때, 이 메서드는 어떻게 행동할 것인가”를 결정하는 옵션입니다.즉,트랜잭션이 없을 때?트랜잭션이 이미 있을 때?이 두 상황에 대한“정책 선언”입니다.2. REQUIRED의 정확한 의미REQUIRE..

[Spring 공식문서 정리] 9. 트랜잭션 전파는 왜 이렇게 설계됐을까 – REQUIRED와 REQUIRES_NEW의 차이

8편에서는 @Transactional이 프록시 기반으로 동작하며, 예외 타입에 따라 롤백 여부가 어떻게 결정되는지를 내부 구현 관점에서 살펴봤습니다.이번 글에서는 그 다음 단계의 질문을 다뤄보겠습니다.이미 트랜잭션이 시작된 상태에서 또 다른 @Transactional 메서드를 호출하면 Spring은 왜 굳이 “전파”라는 개념을 사용할까?그리고 더 중요한 질문은 이것입니다.왜 REQUIRED가 기본값이고, REQUIRES_NEW는 기존 트랜잭션을 suspend까지 하면서 새로 시작하도록 설계됐을까?1. 트랜잭션 전파(Propagation)란 무엇인가트랜잭션 전파란,이미 트랜잭션이 존재할 때 새로운 트랜잭션 경계를 어떻게 처리할지에 대한 정책입니다.즉, 전파는 “트랜잭션을 시작할지 말지”가 아니라,이미 있는..

반응형