Spring 프레임워크에서 @Transactional은 데이터베이스 트랜잭션을 관리하는 도구입니다. 하지만 이 어노테이션을 사용할 때 주의해야 할 함정 중 하나가 바로 자기 호출(Self-Invocation) 문제입니다. 이번 글에서는 이 이슈가 무엇인지, 왜 발생하는지, 그리고 어떻게 해결할 수 있는지 알아보겠습니다.@Transactional의 동작 원리Spring의 @Transactional은 AOP(Aspect-Oriented Programming)를 기반으로 동작합니다. Spring은 @Transactional이 붙은 메서드를 프록시 객체로 감싸서 트랜잭션 시작과 종료를 관리합니다. 즉, 메서드가 호출될 때 프록시가 개입하여 트랜잭션을 열고, 메서드 실행이 끝나면 커밋 또는 롤백을 처리합니다.하지..