<aside> 1️⃣ 프록시와 연관관계 매핑의 관계성
</aside>
Order
엔티티와 Member
엔티티 간의 다대일 관계에서 Order
엔티티에 대해 Member
엔티티를 프록시로 초기화할 수 있다.
이 경우, Order
엔티티를 조회할 때는 Member
엔티티가 프록시로 반환되며, 실제 Member
엔티티를 사용할 때까지 데이터베이스에서 로딩이 지연된다.프록시는 JPA의 내부에서 사용되는 기술로, 개발자가 직접적으로 조작하거나 신경쓰지 않아도 된다. JPA는 프록시를 내부적으로 생성하여 연관된 엔티티를 효율적으로 로딩하고 성능을 최적화하는 역할을 한다.
<aside> 2️⃣ 코드 예시
</aside>
Order
엔티티와 Member
엔티티 간의 다대일 관계를 가정한 코드이다.@Entity
public class Order {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private Member member;
// ...
}
@Entity
public class Member {
@Id
private Long id;
// ...
}
Order
엔티티의 member
필드에 fetch = FetchType.LAZY
옵션이 설정되어 있다.
이는 Member
엔티티를 프록시로 초기화하여 지연 로딩을 수행함을 의미한다.Order
엔티티를 조회할 때는 member
필드가 프록시로 반환되며, 실제 Member
엔티티를 사용할 때까지 데이터베이스에서 로딩을 지연시킨다. 이로써 연관된 Member
엔티티를 실제로 필요로 할 때만 로딩되어 성능을 향상시킬 수 있다.