정의

JPA에서 Transaction을 지원하는 어노테이션

목적 및 특징

목적

비즈니스 로직에 Transaction관련 로직이 들어가면 가독성 감소, 변화에 유연한 대처 어려움이 발생

따라서 선언적 Transaction인 @Transactional을 사용하면

특징

예시

사용 방법

따라서

동작 원리

PROXY 패턴을 사용하는 Spring AOP를 활용하여 선언적 트랜잭션을 구현한다.

  1. 사용자가 @Transactional이 붙은 메서드를 호출되면 AOP가 적용된 CGLIB proxy를 호출
  2. 트랜잭션이 시작되고 SpringBoot가 등록한 PlatformTransactionManager를 DI 받음
  3. 개발자가 작성한 코드 실행
  4. 메소드가 종료되면 결과에 따라 commit() or rollback()을 호출

동작 순서

우선 순위

클래스 메소드 > 클래스 > 인터페이스 메소드 > 인터페이스

모드

Proxy Mode와 AspectJ Mode가 있는데 Proxy Mode가 Default

설정