반응형
개발을 하다가 Transactional annotation을 사용하거나 본적이 있을것이다.
해당 어노테이션은 해당 메서드 내에서 어떤 작업들이 이루어지다가 에러가 날 경우 수행했던 작업을 모두 이전으로 돌려주는, Rollback시켜주는 작업이다.
하지만 모든 에러와 예외사항에 대해서 rollback이 되는것은 아니다.
해당 포스팅을 읽기 전에 에러와 예외에 관해서 아래 참고 포스팅을 읽고 오는것을 추천한다.
글을 읽고 왔다면
이제 에러와 예외(체크, 언체크) 에 대해서 구분을 할수 있을것이다.
자바 프레임워크에서는 기본적으로 Transactional 이 checked Exception 에 대해서는 롤백시키지 않도록 설계가 되어있다.
이유는 스프링 프레임워크가 EJB 관습을 따르기 때문이다.
만약 코드에서 throw new Exception 으로 강제로 Checked Exception 을 던져버리면 롤백이 되지 않는다는것이다.
하지만 Transactional 어노테이션 설정으로
@Transactional(rollbackFor = {Exception.class})
이렇게 하여 모든 예외, 에러 처리에 rollback을 줄수는 있다.
하지만 이 방법 보다는 예외 전환을 통해서 롤백이 되도록 하는것이 좋은 코딩이다.
참고 포스팅
https://thenicesj.tistory.com/485
반응형
'IT > Java' 카테고리의 다른 글
익명 클래스(anonymous class)란? (12) | 2023.02.25 |
---|---|
Thread란? (process비교) (12) | 2023.02.21 |
Spring 에서 async 처리 (@Async) (13) | 2023.02.19 |
Error, Checked Exception, Unchecked Exception 비교 (11) | 2023.02.14 |
findBy 쿼리 메서드에서 dto 명칭(underbar, camel case) (10) | 2023.02.10 |
댓글