패스잇
백엔드 개발 · 중급

Spring의 @Transactional 애노테이션의 propagation 속성에 대해 설명하고, REQUIRED와 REQUIRES_NEW의 차이점을 설명해주세요.

힌트 · 트랜잭션 전파 방식과 각각의 사용 사례를 생각해보세요.

트랜잭션 전파REQUIREDREQUIRES_NEW물리적 트랜잭션논리적 트랜잭션

모범답안

@Transactional 애노테이션의 propagation 속성은 트랜잭션 경계 내에서 다른 트랜잭션이 호출될 때 어떻게 동작할지를 결정합니다. 즉, 기존 트랜잭션이 있을 때 새로운 트랜잭션을 어떻게 처리할지 정의하는 것이죠.

REQUIRED는 기존 트랜잭션이 있으면 참여하고, 없으면 새로운 트랜잭션을 시작합니다. 가장 일반적인 설정이며, 대부분의 경우에 적합합니다.

REQUIRES_NEW는 항상 새로운 트랜잭션을 시작합니다. 기존 트랜잭션이 있더라도 잠시 중단하고 새로운 물리적인 트랜잭션을 시작합니다. 예를 들어, 핵심 로직의 트랜잭션 실패와 관계없이 항상 로그를 기록해야 하는 경우에 유용합니다. 로그 기록 실패가 핵심 로직 트랜잭션에 영향을 주지 않도록 분리하는 것이죠. REQUIRED는 논리적인 트랜잭션으로 묶이지만, REQUIRES_NEW는 물리적으로 분리된 트랜잭션을 사용합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Java / Spring 면접 질문

← Java / Spring 면접 질문 전체 보기