skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

자바 checked/unchecked exception과 트랜잭션 #72

Open skarltjr opened 2 years ago

skarltjr commented 2 years ago

개요

흔히 unchecked exception의 경우 트랜잭션을 롤백해야한다!!! 라는 오해!!를 할 수 있다고 한다.
이 말의 문제점을 파악해보자

1. checked / unchecked exception

2. 트랜잭션

개요에서 짚고넘어가야할 첫번째 문제

unchecked exception의 경우 트랜잭션을 롤백해야한다라고 했을 때 과연 이 트랜잭션이 무엇을 의미하는가?
데이터베이스 트랜잭션인가? 메세지큐 트랜잭션인가?
굉장히 모호한 말이며 이보다 더 큰 문제가 있다.

3. 오해

애초에 자바의 unchecked exception과 트랜잭션이 무슨 관계냐.
★ 이 둘을 연관지어 생각할게 아니다 !!!! 

그럼 unchecked exception의 경우 트랜잭션을 롤백해야한다라는 말이 왜 나왔을까?
★ 스프링 트랜잭션은 기본적으로!! 런타임 예외를 롤백처리한다는 말을 잘못받아들인것

말에서도 알 수 있듯이 스프링의 트랜잭션이 기본적으로 그렇게 처리한다.
이 말이 자바 unchecked exception은 모두 트랜잭션을 롤백시켜야한다는 말이 절대 아니다!!!!

애초에 스프링의 트랜잭션도 기본적으로 런타임 예외시 롤백시키는거지 옵션으로 설정할 수 있다.
반대로 checked exception도 롤백으로 처리할 수 있다.

4. 정리

애초에 자바의 unchecked exception과 트랜잭션을 연관지을 필요가 없다.
unchecked exception을 무조건 트랜잭션 롤백이 아니라 어떻게 처리하느냐는 개발자가 상황에 맞게 구현하는것이다.

그러니까 자바를 스프링과 동일시하는, 자바를 스프링의 하위 부품으로 취급하는 위험에서 벗어나야한다.

참고 : https://www.youtube.com/watch?v=_WkMhytqoCc