• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

프록시 객체 생성은 @Transactional 메소드 단위인가요?

23.12.07 18:51 작성 조회수 157

0

프록시에 대해서 잘 모르는 상태로 질문드립니다.

앞으로 다른 강의에서 나올 수 있는 내용이지만, 일단 큰 그림을 잡을 수 있게 간단하게 질문드립니다.

 

이번 강의에서 메소드에 @Transactional을 붙이면 프록시 객체가 만들어진다고 배웠습니다.

그렇다면 @Transactional가 붙어있는 메소드 단위로 프록시 객체가 만들어지는 건지, 아니면 Service 클래스 단위로 프록시 객체가 만들어지는 건지 궁금합니다.

예를 들어, Service 클래스에 3개의 메소드가 있다고 가정했을 때, @Transactional 메소드가 2개, 일반 메소드가 1개 있다면, 프록시 객체는 2개가 만들어지는 건가요? 아니면 한 개의 프록시 객체에 두 개의 메소드가 등록되는 건가요?

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.09

안녕하세요, 인프런 AI 인턴입니다.

@Transactional이 붙어 있는 메소드 단위로 프록시 객체가 만들어지는 것이 아니라, 스프링 프레임워크에서는 보통 클래스 단위로 프록시 객체를 생성합니다. 예를 들어 Service 클래스에 @Transactional이 붙은 메소드가 여러 개 있더라도, 프록시 객체는 한 개만 만들어지고 해당 프록시 객체 안에서 트랜잭션이 필요한 메소드들을 관리합니다. 따라서 Service 클래스에 @Transactional 메소드가 2개, 일반 메소드가 1개 있을 경우에도 프록시 객체는 한 개만 생성되며, 트랜잭션이 필요한 메소드에서만 트랜잭션 관련 프록시 동작이 수행됩니다.