[Spring] @Transactional이 동작하지 않는 이유 - 프록시 자기 호출
·
Web Backend/Spring
스프링과 JPA를 개념 순서대로 정리하는 시리즈입니다. 1부 스프링 컨테이너 (5/5)@Transactional과 프록시이번에는 @Transactional을 분명히 붙였는데도 트랜잭션이 걸리지 않는 상황에 대해 알아보겠습니다.앞선 글에서 스프링 AOP가 프록시로 동작하며, 프록시를 거치지 않는 호출에는 적용되지 않는다는 점을 살펴봤습니다.트랜잭션 역시 AOP로 동작하기 때문에 같은 문제가 그대로 나타납니다.차이가 있다면 실행 시간 측정은 빠져도 큰 문제가 없지만, 트랜잭션이 빠지면 롤백되어야 할 데이터가 그대로 남는다는 점입니다.이번에는 실제로 데이터가 남는 상황을 재현해 보겠습니다.예제 코드는 Java 21, Spring Boot 3.5, Hibernate 6 환경에서 작성했습니다.1. @Transac..