@Transactional 어노테이션을 Service단에 붙여줬으나 예외상황이 발생했을 때 롤백이 안되는 것을 발견하고 원인을 찾게되었다.
내가 주로 사용하는 기능에 대해서만 서술하고자 한다.
여러 기능들이 있지만 내가 주로 사용한 기능은 readOnly였다!
이유는 ? 읽기전용으로만 지정함으로써 성능 개선, (Insert,update,delete) 등 다른 기능 사용 제한이였다.
위 계기에서 롤백이 안되는이유가 바로 이 옵션을 사용하지않았기 때문이다! 그냥 @Transactional만 붙이면 Unchecked Exception, Error 만을 rollback시킨다! 그래서 모든 예외에 대해서 롤백을 시키고 싶으면
(rollbackFor = Exception.class)를 붙여줘야한다.
좋은 경험으로 인해 자바의 예외처리와 스프링 어노테이션에 대해서 공부하게된 계기가 되었다. 앞으로 어노테이션에 대해서 한 번더 꼼꼼히 보고, 사용하게 될 때 기본적인 기능과 사용 이유를 찾아보고 올바르게 사용하는 습관을 들이고자 한다.