← 질문 목록
#384깊이 0

부모 트랜잭션과 무관하게 동작하려면 어떤 전파 속성을 쓰는가?

프레임워크

REQUIRES_NEW 전파 속성을 쓴다. 이 속성은 기존 트랜잭션을 일시 정지하고 항상 새로운 물리 트랜잭션을 만든다.

  1. 1. 부모 트랜잭션에서 자식 트랜잭션으로: REQUIRES_NEW 호출 (부모 일시 정지)
  2. 2. 자식 트랜잭션에서 자식 트랜잭션으로: 독자 커밋 또는 롤백 완료
  3. 3. 부모 트랜잭션에서 부모 트랜잭션으로: 부모 트랜잭션 재개 및 완료

기본값인 REQUIRED는 부모 트랜잭션에 참여한다. 참여한 자식 트랜잭션에서 예외가 발생하면 부모까지 모두 롤백된다. 로그 기록처럼 본문 로직과 무관하게 성공해야 하는 작업에는 REQUIRES_NEW를 쓴다.

이 속성을 쓸 때는 커넥션 고갈을 경계해야 한다. 자식 트랜잭션이 수행되는 동안 부모 트랜잭션의 커넥션도 대기 상태로 유지된다. 동시 요청이 몰리면 커넥션 풀의 자원이 부족해져 시스템이 멈출 수 있다.

두 트랜잭션을 완전히 분리하려면 호출 방식도 주의해야 한다. 같은 클래스 내부에서 메서드를 호출하면 프록시를 거치지 않아 전파 속성이 동작하지 않는다. 외부 클래스의 메서드로 분리해 호출해야 프록시가 새 트랜잭션을 적용한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

부모 트랜잭션과 무관하게 동작하려면 어떤 전파 속성을 쓰는가?