← 질문 목록
#396깊이 0
부모 트랜잭션과 무관하게 독립 커밋을 하려면 어떤 전파 속성을 쓰는가?
프레임워크
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
REQUIRES_NEW 전파 속성을 쓴다. 부모 트랜잭션이 롤백되어도 이미 커밋된 자식 트랜잭션의 작업은 영향받지 않는다.
부모 트랜잭션 시작→부모 트랜잭션 일시 정지
REQUIRES_NEW 호출
REQUIRES_NEW 호출→자식 트랜잭션 시작 및 커밋
독립 트랜잭션 수행
자식 트랜잭션 시작 및 커밋→부모 트랜잭션 재개
부모 로직 계속 수행
주문 로직이 롤백되어도 로그 기록이나 알림 발송 이력을 남겨야 하는 상황에서 쓴다. 기본값인 REQUIRED를 쓰면 부모가 롤백될 때 자식의 변경사항도 함께 취소된다.
REQUIRES_NEW는 기존 트랜잭션을 일시 정지하고 새로운 커넥션을 가져온다. 단일 스레드가 동시에 둘 이상의 커넥션을 점유하여 커넥션 풀 고갈을 일으킬 수 있다.
자식 트랜잭션 내부에서 예외가 발생하면 부모 트랜잭션으로 예외가 전파된다. 부모 트랜잭션의 롤백을 막으려면 자식 호출부를 예외 처리 구문으로 감싸야 한다.