회사/Spring

[Spring] @Transactional과 try-catch

daykim 2024. 9. 2. 09:12

@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