이전 포스터에서는 cascade 속성에 대해 설명을 하였다. 이에 이번에는 JPA에서 entity 간의 관계를 설정하는 fetch 속성에 대해 설명을 하려고 한다.
spring으로 구현을 하면서, 엔티티간의 관계를 설정을 해야 할 상황
Fetch
엔티티를 조회할 때 관련된 엔티티를 어떻게 로드할지를 결정할 때 사용한다.
대표적으로 즉시 로딩 방식(FetchType.EAGER)과 지연 로딩 방식(FetchType.LAZY) 속성이 존재한다.
지연 로딩 방식은 부모 엔티티를 조회할 때 관련된 자식 엔티티를 즉시 로드하지 않고, 실제로 필요할 때 로드한다. 따라오는 문제는 성능상 이점이 있을 수 있지만, 자식 엔티티에 접근할 때 추가 쿼리가 발생할 수 있습니다.
즉시 로딩 방식은 부모 엔티티를 조회할 때 관련된 자식 엔티티도 함께 즉시 로드되는 방식이다. 데이터베이스에서 더 많은 데이터를 한 번에 가져오기 때문에 성능에 영향을 줄 수 있으며, 불필요한 데이터 로드를 피할 수 없다.