인프런 커뮤니티 질문&답변

김동민님의 프로필 이미지
김동민

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 문제 해결 - 트랜잭션 AOP 정리

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

해결된 질문

작성

·

246

0

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

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

 

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

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

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

답변 1

1

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

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

김동민님의 프로필 이미지
김동민

작성한 질문수

질문하기