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

김민지님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

일대일 [1:1]

대상 테이블에 외래키 의 단점

작성

·

458

0

 member table만 조회해서 locker값이 있는지 없는지를 모릅니다. 그래서 locker table까지 조회를 해야합니다.

그래서 지연로딩이 불가하고 즉시로딩만 됩니다.

그런데 이렇게 따지면 주테이블에 외래키를 넣어도

locker table만 조회해서는 member값이 있는지 없는지를 모르지 않나요? member table까지를 확인해봐야 아는거잖아요

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김민지님

주 테이블이 member라고 하면,

member table에 locker의 외래키 값이 있으면, member table만 확인해도 locker의 데이터가 있는지 판단할 수 있습니다.

감사합니다.

0

그렇다면 ManyToOne 관계에서 FK가 Many 쪽에 있고 One에 FK가 없으니,

One을 조회할때 eager로 데이터를 다 가져와야 할 것같은데

One에서 lazy로 가져오는 걸 허용하는 이유가 뭘까요?

One에 입장에서 Many측에 데이터가 얼마나 많은지 알 수 없고 하니,
다 가져오는데 있어 효율적이지 않으므로(데이터를 안쓸 수도 있으니) lazy로 프록시 객체만 생성하고,
이후 해당 데이터를 조회할때 데이터를 가져오는 건데


이처럼 OneToOne 양방향에서도 FK를 관리하지 않는쪽에서 다른 대상 테이블에 자신의 PK를 FK로 갖고 있으니, lazy로 가져올 수 있지않나 싶습니다.

하이버네이트에서 이 경우는 Many때와 달리 데이터를 바로 eager로 가져오는게 효율적이라고 판단해서 이렇게 설계된 것이라고 생각하면 될까요?

lazy로 가져오게 할 수 있을것 같아서 여쭤봅니다.
(연관관계 있는 대상 테이블이 뭔지 알고, FK가 무엇인지도 아니)

답변주시면 감사드리겠습니다. 

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 유승현님

다음을 참고해주세요.

https://www.inflearn.com/questions/224187

감사합니다.