내배캠 주요 학습/매일 공부
checked, unchecked Exception - rollback 이슈
chaeyoung-
2023. 8. 4. 13:14
Exception에 대한 글
2023.08.04 - [나의 호기심] - Exception 뜯어보기
checked, unchecked Exception - rollback 이슈
checked Exception은 기본적으로 rollback을 하지 않는다.
여러 DB 작업을 Transaction으로 묶지 않고 수행하는 상황에서 checked Exception이 발생하면,
수행한 데이터 관련된 작업이 RollBack 되지 않고 Commit되어 그대로 DB에 반영이 된다.
그러므로, DB CUD 시에는 @Transaction(ReadOnly = false) 를 기재하는 것을 권장한다.
서버를 run하여 컴파일하는 시점(.class 생성)에 발생하여 서버가 stop되는 예외
package refill.station.config.annotation;
import org.springframework.transaction.annotation.Transactional;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(rollbackFor = Throwable.class)
public @interface TransactionalWithRollback {
}
unchecked Exception은 rollback을 수행한다.
(runtime Exception은 대표적인 unchecked Exception이다.
서버가 구동 중에 예외되는 처리.
임의의 예외 클래스를 만들어 예외 처리를 하는 경우가 많다.
허나, 일반적으로 실행시 예외를 처리할 수 있는 경우에는 RuntimeException 클래스를 확장해
Unchecked Exception을 사용하는 것이 좋다고 한다.
reference :
선우 튜터님의 7월 21일 후발대 강의의 일부 발췌 → 초상권으로 인해 링크 참조 불가