-
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우Back End/Spring Framework 2024. 11. 27. 18:44
배경지식
- Checked Exception 은 개발자가 인지한 예외라 약속한다.
- Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.
- try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.
- 스프링은 개발자가 인지한 예외에 대해서는 기본적으로 롤백을 진행하지 않는다.
- 예외가 발생한 메서드의 Propagation 레벨이 Required(default) 가 아니면 부모트랜잭션은 롤백되지 않는다.
- 프록시가 Self invocation 을 시도할 경우 경우에 따라 트랜잭션이 롤백되지 않을 수 있다.
발생 케이스
- 발생한 예외가 Checked Exception
- @Transational 어노테이션에 rollbackFor 을 설정하지 않은 경우
- 발생한 예외가 Unchecked Exception
- try-catch 구문안에서 핸들링되는 경우 (Unchecked Exception 을 왜 잡으려고 하는거에요?)
- @Transational 어노테이션에 noRollbackFor 가 설정된 경우
- 자식 메서드의 Propagation 레벨이 Required 가 아닐 경우
- 프록시의 Self invocation 으로 인한 경우
Reference
728x90'Back End > Spring Framework' 카테고리의 다른 글