속성 이름을 외웠는지가 아니라, 호출 체인에서 어떤 작업을 본 트랜잭션과 분리할지에 대한 기준을 갖고 있는지를 가른다.
트랜잭션 전파는 트랜잭션이 걸린 메서드가 또 다른 트랜잭션 메서드를 호출했을 때, 기존 트랜잭션을 이어받을지 끊을지를 정하는 정책이다. 기본값인 REQUIRED는 호출자 트랜잭션에 합류하고, REQUIRES_NEW는 기존 트랜잭션을 잠깐 멈춘 뒤 별도 트랜잭션을 새로 연다. NESTED는 savepoint로 부분 롤백을 만들고, MANDATORY·NEVER는 호출 시점에 트랜잭션 존재 여부를 강제하며, SUPPORTS·NOT_SUPPORTED는 비트랜잭션 실행을 허용한다. 결국 선택의 본질은 어디서 롤백 경계를 끊을지, 어떤 작업을 본 트랜잭션과 분리할지를 정하는 일이다.
한 메서드의 예외로 무관한 작업까지 같이 롤백된 경험이 있다면 전파 경계 재설계와 연결할 수 있다
감사 로그·알림을 별도 트랜잭션으로 끊어본 적이 있다면 REQUIRES_NEW의 비용과 함께 풀어낼 수 있다
self-invocation 때문에 @Transactional이 먹지 않아 디버깅한 경험이 있다면 프록시 기반 AOP 한계와 묶어 답할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.