HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
📜
[팀13] 사각사각 ✏️
/
🔥
트러블슈팅
/
⏳
Unchecked norollback 적용
⏳

Unchecked norollback 적용

 
unchecked exceptions 의 경우 예외가 터지면 rollback이 일어남
하지만 포인트가 부족하여 결제 취소 상태가 된 경우 Payment 상태가 CANCLED가 되어야 되며,
기록용 테이블에도 데이터가 쌓여야 하므로 롤백이 일어나면 안되었음.
 
if (!user.isPayable(series.getPrice())) { payment.transit(Event.PAY_REJECTED); throw new FailedPayment(message); }
 
unchecked Exception은 noRollbackFor을 설정해줘야 한다.
@Transactional(noRollbackFor = FailedPayment.class)
스프링 트랜잭션에서 RuntimeException이 발생하면 롤백이 발생하는 이유
CheckedException : 예외 발생 시트랜잭션을 롤백하지 않고 예외를 던져줍니다. UncheckedException : 예외 발생 시 트랜잭션을 roll-back 합니다. roll-back이 되는 범위가 달라지기 때문에 개발자가 이를 인지하지 못하면 실행 결과가 맞지않거나 예상치 못한 예외가 발생할 수 있습니다. 스프링의 선언적 트랜잭션 (@Transactional) 안에서 RuntimeException 이 발생하면 롤백이 발생하여 롤백 예외가 발생합니다.
스프링 트랜잭션에서 RuntimeException이 발생하면 롤백이 발생하는 이유
https://parkadd.tistory.com/49
스프링 트랜잭션에서 RuntimeException이 발생하면 롤백이 발생하는 이유