본문 바로가기
programming/JAVA

checked/unchecked Exception / @Transactional rollback

by buddev 2023. 5. 6.

checked/unchecked Exception

  • 자바의 예외
    • Error
    • Exception
      • checked exception
        • 컴파일 단계에서 발생. 발생하더라도 롤백하지 않음.
      • unchecked exception
        • 런타임 단계에서 발생. 발생 시 트랜잭션 롤백

 

https://devlog-wjdrbs96.tistory.com/351

 

[Java] Checked Exception vs Unchecked Exception 정리

체크 예외와 언체크 예외(Checked, Unchecked Exception) 자바의 예외는 크게 3가지로 나눌 수 있습니다. 체크 예외(Checked Exception) 에러(Error) 언체크 예외(Unchecked Exception) 자바에서 에러, 예외 관련된 클래

devlog-wjdrbs96.tistory.com

 

@Transactional rollback

별도로 rollbackFor 설정을 하지 않는다면 UnCheckedException  Error 를 default로 설정함

즉, 별도로 설정하지 않는다면 checked exception에 대해서는 exception이 발생하더라도 롤백하지 않게 된다.

 

문제는 checked Exception 이 발생했을 때 트랜잭션이 롤백이 되지 않고 디비에 변경이 되는 것을 모르고 있을 때가 문제가 된다.

만약 모든 예외에 대해서 전부 트랜잭션을 롤백하고 싶다면

exception의 가장 상위 클래스인 Exception.class로 rollbackFor 설정을 해야 한다.

rollbackFor = {Exception.class}

 

 

 

https://pjh3749.tistory.com/269

 

[Spring] @Transactional 롤백은 언제 되는 걸까? - 예외가 발생했는데도 DB 반영이 된다고?

@Transactional 애노테이션 스프링은 @Transactional 애노테이션이 붙은 클래스에 프록시를 생성합니다. 프록시는 트랜잭션 로직을 메서드 앞뒤에 넣어줍니다. 이 글은 @Transactional 의 롤백에 대해서 다

pjh3749.tistory.com

댓글