@Transactional
2022. 3. 2. 21:35ㆍ카테고리 없음
@Transactional
@Transactional이 적용된 범위에서는 트랜잭션 기능이 포함된 프록시 객체가 생성되어 자동으로 DB에 commit 혹은 rollback을 진행해준다. RuntimeException(UnCheckedException) 발생 시 rollback된다.
어째서 UnCheckedException일 때 rollback 되는지 검색해본 결과, 스프링의 예외 전략은 UnCheckedException라는 사실을 발견했다.
개발자가 코드로 처리 불가능한 SQLException, IOException 등의 자바 초기에 구현된 클래스가 던지는 CheckedException은 DataAccessException와 같은 UnchekcedException으로 포장해준다.
런타임에 해결이 불가능한 예외의 경우엔 쓸데없이 메소드 시그니처에 throws를 반복적으로 적거나, 의미 없는 try-catch를 하는 것을 방지하기 위함이다.