로딩
요청 처리 중입니다...

[Spring] Transaction catch 위치에 따른 Rollback 여부 체크

 [Spring] Transaction catch 위치에 따른 Rollback 여부 체크

개념적으로 예상한 그림이었지만, 직접 확인해보고 싶은 사람들을 위해 가볍게 테스트를 한 기록을 남겨보려고 합니다. Transaction이 AOP로 동작하니, 컨트롤러에서 Catch하면 롤백 여부에는 영향이 없고, Service에서 캐치하면 롤백이 일어나지 않게 할 수 있습니다.

여기서 일어나지 않게 할 수 있다라는 말은, 사실 잘못 알려진 개념도 함께 말할 수 있는데, UncheckedException은 알아서 스프링이 롤백을 해주고, checkedException은 추가적인 작업을 해야한다와 같은 2% 부족한 개념을 말하는 것입니다. 스프링 문서를 살펴보면, default로 우리가 알고 있는 uncheckedException인 RuntimeException에 대해서 rollback 처리가 되도록 구현..........