스프링은 트랜잭션 내에서 발생한 예외에 대해
CheckedException과 UncheckedExcepion에 대해 각각 다른 기본 전략을 취한다.
- 트랜잭션 내 CheckedExcpetion발생 시
체크드 익셉션은 보통 예상범주에서 발생하기 때문에, 회복가능한 예외로 판단하여 기본적으로는 롤백이 실행되지 않는다.
- 트랜잭션 내 UncheckedExcepion 발생 시
기본적으로 롤백이 실행된다.
UncheckedExcepion는 보통 예상치 못하게 발생한 예외이므로 회복이 불가능하다 판단하여 Spring에서는 기본적으로 예외 발생 시 롤백 전략을 취한다.
트랜잭션 내 예외처리 구문이 있더라도, 트랜잭션 관리자는 UncheckedExcption의 발생 여부를 알기 때문에 무조건 롤백된다.
하지만 이는 어디까지나 Spring의 기본 전략일 뿐, 실무에서는 비즈니스에 따라 Transaction의 RollbackFor / noRollbackFor옵션을 통해 에외에 대한 대응 전략이 달라질 수 있다.