@Transactional
- 클래스, 메서드에 @Transactional 어노테이션을 선언하면, 해당 클래스에 트랜잭션이 적용된 프록시 객체가 생성된다.
- 프록시 객체는 @Transactional이 포함된 메서드가 호출될 경우, 트랜잭션을 시작하고 Commit || Rollbakc을 수행한다.
- CheckedException || 예외가 없는 경우 Commit
- UncheckedException이 발생하면 Rollback
- 즉, 원자성을 보장해준다.
그런데, 프로젝트를 수행하는 중 에러가 발생했는데도 Rollback이 수행되지 않았다.
찾아보니, try에서 예외가 발생해 catch에서 처리한 경우에는 rollback이 수행되지 않는다.
만약, 예외나 에러 발생시 rollback 처리를 하고싶다면, 참고자료를 확인하자.
@Transactional 내에서 try catch와 rollback 연관성
Spring Framework을 사용하면서 @Transactional 어노테이션에 대해 크게 고민해본 적이 없었다. 트랜잭션 내의 작업에 있어서 원자성을 보장해준다? 정도 (원자성: 하나의 원자 트랜잭션은 모두 성공하거
dpqk.tistory.com
'회사 > Spring' 카테고리의 다른 글
[Spring] @RequestBody / @RequestParam 비교 (0) | 2025.04.11 |
---|---|
[SPRING] LOGIN INTERCEPTOR (0) | 2025.03.18 |
[Spring] ObjectMapper (0) | 2024.03.27 |
[Mybatis] <selectKey> (0) | 2024.03.18 |