콘텐츠로 이동

2022 08 11

2022-08-11

Transcation 롤백 at Exception

  • 참고: https://techblog.woowahan.com/2606/
  • 개요
    • 스프링의 선언적 트랜잭션 @Transactional 안에서 잡은 예외는 롤백 없이 커밋되는게 맞지 않나?
      • RuntimeException이 발생하면 롤백되는게 국룰
        • CheckedException은 예상된 에러라 롤백 안하고
        • UncheckedException은 예상 못한 에러라 롤백하고
      • 근데 try-catch로 감싸주면 롤백 안되지 않을까?
    • 그런데 Rollback 예외가 발생하면서 롤백됨!
  • 이유
    • marked as rollback-only
    • 예외가 RuntimeException이면 롤백함
    • 근데 처음에 롤백 바로되는게 아니라 최상위 트랜잭션까지 와서 롤백됨
      • 이유는 isLocalRollbackOnly = false 가 디폴트이기 때문
  • 결론
    • 참여중인 일부 트랜잭션이 실패할 때 전체 다 롤백하는 것은 의도된 행동