728x90
팀프로젝트 ERD 캡쳐본이다.
여기서 real_estate와 member 사이의 관계를 주목해보자.
둘 사이의 관계는 N:1 관계이다.
다음은 real_estate의 코드이다.
Real_estate와 member 사이의 관계는 N:1이기 때문에 Real_estate 입장에선 @ManytoOne 관계가 맞다.
그리고 추가적으로 입력하는 fetch = FetchType.LAZY 라는 정보는 어떤 의미일까?
LAZY 속성을 사용하게 되면 EntityManager에 있는 member 값을 조회하려 할 때 오직 member만 조회된다.
그렇다면 EAGER 속성을 사용하면 어떻게 될까?
EntityManager에 있는 member을 조회하려 할 때 member와 연관 관계가 있는 테이블이 모두 조회가 된다.
즉, 위의 경우에선 real_estate까지 join 되어 불러오게 된다는 것이다.
그렇다면 LAZY를 사용하는 것이 맞나요?
어떤 의도로 구현하려 하느냐에 따라 다르겠지만 테이블 하나를 조회할 때 매핑 되어있는 테이블들을 함께 조회하고 싶다
→ EAGER 사용
아니다. 나는 하나의 테이블만을 조회하고 싶다.
→ LAZY 사용
보통 LAZY를 사용하라고 권고하는 이유는 불러오고 하는 과정에서 데이터 낭비가 존재하기에
728x90
'JPA' 카테고리의 다른 글
초보자도 이해할 수 있는 JPA, Hibernate, Spring Data JPA의 차이점 (0) | 2023.08.30 |
---|---|
[JPA] 연관 관계 핵심 정리해보기 - 연관 관계의 주인, 양방향, 단방향 (0) | 2023.02.19 |
[JPA] @ManyToMany, 다대다 관계 다루는 법 (0) | 2023.02.19 |