Everyday Dev System

checked, unchecked Exception - rollback 이슈 본문

내배캠 주요 학습/매일 공부

checked, unchecked Exception - rollback 이슈

chaeyoung- 2023. 8. 4. 13:14

Exception에 대한 글

2023.08.04 - [나의 호기심] - Exception 뜯어보기

 

Exception 뜯어보기

Exception에 대해서 자세히 살펴보겠습니다. Exception 아래 사진을 보면 Throwable 클래스를 상속한 Exception 과 Error 클래스가 있습니다. 아래는 Exception 을 상속한 RuntimeException 입니다. 여기서 쓰인 주석

cdev.tistory.com

 

 

 

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일 후발대 강의의 일부 발췌 → 초상권으로 인해 링크 참조 불가