트랜잭션 AOP

트랜잭션 AOP는 Spring이 프록시를 통해 비즈니스 메서드 호출 전후에 트랜잭션 시작, 커밋, 롤백을 자동으로 적용하는 방식입니다.

등장 요소

동작 흐름

클라이언트
  -> 트랜잭션 AOP 프록시
  -> TransactionManager.getTransaction()
  -> 커넥션 획득 및 트랜잭션 시작
  -> TransactionSynchronizationManager에 리소스 바인딩
  -> 실제 비즈니스 메서드 실행
  -> 성공 시 commit / 예외 시 rollback
  -> 리소스 정리

왜 동기화 매니저가 필요한가

서비스 로직은 여러 Repository나 DAO를 호출할 수 있습니다. 이때 같은 트랜잭션을 유지하려면 같은 커넥션이나 EntityManager를 공유해야 합니다. TransactionSynchronizationManager는 현재 스레드에 트랜잭션 리소스를 보관해 하위 데이터 접근 코드가 같은 리소스를 사용할 수 있게 합니다.

주의사항

핵심 정리

트랜잭션 AOP는 @Transactional 메서드 호출을 프록시가 감싸고, TransactionManager와 동기화 매니저를 통해 트랜잭션 리소스를 관리하는 구조입니다.

→ 스프링 트랜잭션 AOP 동작 흐름에 대해서 설명해주세요

CSLOG에서 보기