본문 바로가기
IT/Java

@Transactional 사용시 주의 사항1 (checked Exception)

by 성준하이 2023. 2. 20.
반응형

개발을 하다가 Transactional annotation을 사용하거나 본적이 있을것이다.

해당 어노테이션은 해당 메서드 내에서 어떤 작업들이 이루어지다가 에러가 날 경우 수행했던 작업을 모두 이전으로 돌려주는, Rollback시켜주는 작업이다.

 

하지만 모든 에러와 예외사항에 대해서 rollback이 되는것은 아니다.

해당 포스팅을 읽기 전에 에러와 예외에 관해서 아래 참고 포스팅을 읽고 오는것을 추천한다.

 

글을 읽고 왔다면

이제 에러와 예외(체크, 언체크) 에 대해서 구분을 할수 있을것이다.

 

자바 프레임워크에서는 기본적으로 Transactional 이 checked Exception 에 대해서는 롤백시키지 않도록 설계가 되어있다.

이유는 스프링 프레임워크가 EJB 관습을 따르기 때문이다.

 

만약 코드에서 throw new Exception 으로 강제로 Checked Exception 을 던져버리면 롤백이 되지 않는다는것이다.

 

하지만 Transactional 어노테이션  설정으로

@Transactional(rollbackFor = {Exception.class})

이렇게 하여 모든 예외, 에러 처리에 rollback을 줄수는 있다.

 

하지만 이 방법 보다는 예외 전환을 통해서 롤백이 되도록 하는것이 좋은 코딩이다.

 


참고 포스팅

https://thenicesj.tistory.com/485

 

Error, Checked Exception, Unchecked Exception 비교

포스팅 시작 앞에 에러와 예외에 대해서 먼저 비교를 해보고 시작하려고 한다. Error란 시스템 레벨에서 발생하는 심각한 수준의 오류를 뜻하며 개발자가 미리 예측하여 처리할 수 없기에 개발

thenicesj.tistory.com

 

반응형

댓글