Spring/트랜잭션

@Transactional

한비Skyla 2025. 2. 6. 11:51

✏️  Spring AOP

프록시 패턴: 어떤 객체를 사용하고자 할 때 해당 객체를 대리(proxy)하는 객체를 통해 접근하는 방식.

 

 

[Spring] AOP와 @Transactional의 동작 원리

오늘은 @Transactional의 동작 원리를 AOP와 함께 좀 더 자세하게 조사해보려고 한다.여기서 다루는 내용은 다음과 같다.AOP란 무엇이며 왜 사용하는가Spring AOP는 왜 프록시를 사용하는가@Transactional은

velog.io

  1. target에 대한 호출이 들어오면 AOP proxy가 이를 가로채서(intercept) 가져온다.
  2. AOP proxy에서 Transaction Advisor가 commit 또는 rollback 등의 트랜잭션 처리를 한다.
  3. 트랜잭션 처리 외에 다른 부가 기능이 있을 경우 해당 Custom Advisor에서 그 처리를 한다.
  4. 각 Advisor에서 부가 기능 처리를 마치면 Target Method를 수행한다.
  5. interceptor chain을 따라 caller에게 결과를 다시 전달한다.

✏️  @Transactional

@Transactional을 메서드 또는 클래스에 명시하게 되면 특정 메서드 또는 클래스가 제공하는 모든 메서드에 대해 내부적으로 AOP를 통해 트랜잭션 처리코드가 전 후 로 수행된다.

 

https://wjcodding.tistory.com/81

 

[Spring Data JPA] LazyInitializationException 오류 해결 방법

프로젝트를 진행하면서 처음보는 오류를 발견하였다. 🙄 LazyInitializationException 같은 백엔드 팀원분과 서칭해서 반나절만에 해결할 수 있었다. 환경 : AWS ec2 인스턴스에서 서버 배포 + Spring Data JPA

wjcodding.tistory.com

 

1. 서비스 단에 @Transactional 을 붙여놓은 상태에서 메서드가 종료되면, hibernate 의 session 종료

 >> 영속성 컨텍스트도 사라짐. 이 영속성 컨텍스트는 트랜잭션과 생명주기를 같이 함.

 >> service 호출 후 controller로 돌아오면 종료.!!!!!