그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Spring
Spring

스프링 트랜잭션 전파 속성은 어떻게 선택하나요?

실무5/5
설계5/5
인간4/5
기초3/5

면접관의 질문 의도

속성 이름을 외웠는지가 아니라, 호출 체인에서 어떤 작업을 본 트랜잭션과 분리할지에 대한 기준을 갖고 있는지를 가른다.

큐레이션 답변

학습 자료

트랜잭션 전파는 트랜잭션이 걸린 메서드가 또 다른 트랜잭션 메서드를 호출했을 때, 기존 트랜잭션을 이어받을지 끊을지를 정하는 정책이다. 기본값인 REQUIRED는 호출자 트랜잭션에 합류하고, REQUIRES_NEW는 기존 트랜잭션을 잠깐 멈춘 뒤 별도 트랜잭션을 새로 연다. NESTED는 savepoint로 부분 롤백을 만들고, MANDATORY·NEVER는 호출 시점에 트랜잭션 존재 여부를 강제하며, SUPPORTS·NOT_SUPPORTED는 비트랜잭션 실행을 허용한다. 결국 선택의 본질은 어디서 롤백 경계를 끊을지, 어떤 작업을 본 트랜잭션과 분리할지를 정하는 일이다.

좋은 답변 구조

  1. 01전파 속성이 풀어주는 문제를 한 줄로 정의한다
  2. 02REQUIRED·REQUIRES_NEW·NESTED의 롤백 경계 차이를 비교한다
  3. 03어떤 작업을 본 트랜잭션과 분리해야 하는지 선택 기준을 제시한다
  4. 04self-invocation·커넥션 풀 같은 실무 함정을 짚는다

자주 실수하는 포인트

감사 로그·알림 같은 부수 작업을 본 트랜잭션 안에 두고 함께 롤백시킨다
NESTED가 어디서나 부분 롤백 도구로 동작한다고 가정하고 JPA 환경의 제약을 놓친다
REQUIRES_NEW를 분리 도구로만 보고 커넥션 풀 압박을 고려하지 않는다
같은 클래스 내부 호출에서도 @Transactional이 그대로 적용된다고 믿는다

실무 맥락

  • 결제·재고·감사 로그가 한 흐름에 묶인 주문 처리 서비스
  • 수천 건 단위로 잘라 처리하며 일부 실패를 견뎌야 하는 배치 잡 환경
  • 이벤트 발행과 본 트랜잭션을 분리해 외부 시스템 정합성을 맞춰야 하는 환경

본인 경험에 녹이는 힌트

한 메서드의 예외로 무관한 작업까지 같이 롤백된 경험이 있다면 전파 경계 재설계와 연결할 수 있다

감사 로그·알림을 별도 트랜잭션으로 끊어본 적이 있다면 REQUIRES_NEW의 비용과 함께 풀어낼 수 있다

self-invocation 때문에 @Transactional이 먹지 않아 디버깅한 경험이 있다면 프록시 기반 AOP 한계와 묶어 답할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1REQUIRES_NEW를 자주 쓰면 커넥션 풀이 마르는 이유는 무엇인가요
Q2NESTED와 REQUIRES_NEW의 롤백 경계는 어떻게 다른가요
Q3같은 클래스 내부 호출에서 @Transactional이 동작하지 않는 이유는 무엇인가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문