Spring/Spring

[Spring][Data Access] 1-4. Transaction Manager: Declarative Transaction Management - Using @Transactional (3)

noahkim_ 2024. 8. 11. 11:24

1.  @Transactional

  • 트랜잭션 경계를 선언적으로 설정하는데 사용됨 (메서드나 클래스)
  • public 메서드만 트랜잭션 대상으로 간주 (class-based proxy 사용 시, protected or package-private 메소드도 적용 가능)

 

Setting

  • transactionManager
  • propagation
  • isolation
  • readonly
  • timeout
  • rollbackfor
  • noRollbackfor

 

2. Transaction with AOP

  • Spring의 선언적 트랜잭션 관리는 AOP를 기반으로 함
  • 이 프록시는 TransactionInterceptor를 통해 트랜잭션 작업을 수행 (시작, 커밋, 롤백)

 

AspectJ Mode
  • AOP 프록시를 사용하므로 자기 호출에는 트랜잭션 적용 X (인스턴스가 자신의 메서드 내에서 또 다른 자신의 메서드 호출)
  • AspectJ 모드를 사용하면 자기 호출에도 트랜잭션 적용됨 (바이트코드 수준에서 트랜잭션 처리)

 

 

 

 

출처