프록시1 @Transactional을 붙였는데 롤백이 안 된다고요? 스프링 AOP 프록시 내부 호출(Self-Invocation)의 함정 안녕하세요, 여러분의 든든한 IT 길잡이 데브프리입니다. 스프링 부트(Spring Boot)로 백엔드를 개발하다 보면 특정 로직이 실패했을 때 데이터베이스를 이전 상태로 되돌리기 위해 @Transactional 어노테이션을 숨 쉬듯이 사용하게 됩니다. 그런데 개발 서버에서 테스트를 하던 중 등골이 서늘해지는 상황을 마주할 때가 있습니다. 명백하게 데이터베이스 저장 도중 런타임 예외(RuntimeException)가 발생해서 에러 로그가 시뻘겋게 찍혔는데, DB를 확인해 보니 데이터가 롤백(Rollback)되지 않고 버젓이 저장되어 있는 기현상입니다. "어? 분명히 메서드 위에 @Transactional을 예쁘게 붙여놨는데 왜 롤백이 안 된 거지?" 오늘은 실무에서 백엔드 개발자들이 가장 많이 당하는 함정.. 2026. 8. 14. 이전 1 다음