반응형
@Transactional(rollbackFor = Exception.class)
🔹 기본 동작
- @Transactional은 기본적으로 RuntimeException과 Error가 발생하면 롤백합니다.
- 즉, 체크 예외(Exception의 하위 클래스지만 RuntimeException이 아닌 것들)는 기본적으로 롤백 대상이 아닙니다.
🔹 rollbackFor 옵션의 의미
- rollbackFor = Exception.class라고 지정하면, 체크 예외까지 포함해서 모든 예외가 발생하면 롤백하도록 강제합니다.
- 기본값이 "모든 예외 롤백"이 아니라 "런타임 예외만 롤백"이기 때문에, 위처럼 명시적으로 지정하는 경우가 많습니다.
🔹 왜 이렇게 쓰는가?
- 비즈니스 로직에서 IOException, SQLException 같은 체크 예외가 발생했을 때도 트랜잭션을 롤백하고 싶을 수 있습니다.
- 기본 설정만 쓰면 이런 체크 예외는 롤백되지 않고 커밋될 수 있어, 데이터 정합성 문제가 생길 수 있습니다.
- 그래서 rollbackFor = Exception.class를 붙여 모든 예외 상황에서 안전하게 롤백되도록 하는 거죠.
✅ 정리하면:
rollbackFor가 기본 true가 아니라, 기본은 런타임 예외만 롤백입니다.
체크 예외까지 롤백하려고 rollbackFor = Exception.class를 명시하는 거예요.
728x90
반응형
'IT > 프로그래밍' 카테고리의 다른 글
| 상태 변수 이름 state, status 차이 (0) | 2025.10.23 |
|---|---|
| Offset Pagination과 Cursor Pagination (0) | 2024.03.27 |
| File up & download HTML (0) | 2020.08.07 |
| JAVA] A와 B 날짜 차이 계산하기 (0) | 2020.07.09 |
| ANGULAR build Options [ 빌드 캐시 삭제 ] (0) | 2020.05.14 |