• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

team.getMembers에 관한 질문

24.02.21 15:31 작성 24.02.21 15:33 수정 조회수 161

0

em.flush() em.clear를 해야지만 findTeam.getMembers()를 통해서 members조회가 가능하더라구요. 제가 이해한 바로는 Team안에

@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();

이렇게 되어있지만 우리가 members에 대해서 설정한 부분이 없다. 여기까지는 이해했습니다. 그렇다면 이렇게 설정하고 DB에 flush를 하면 JPA가 알아서 Team에 대한 members를 넣어주는건가요? 아니면 em.find(Member.class,member.getId())를 했을 때에 JPA가 members를 찾아주나요? 이것이 궁금합니다.

답변 1

답변을 작성해보세요.

1

OMG님의 프로필

OMG

2024.02.22

안녕하세요. 서정원님, 공식 서포터즈 OMG입니다.

양방향 연관관계와 연관관계의 주인 1- 기본을 수강중에 남기신 질문으로 확인이 됩니다.

바로 직전 강의(단방향 연관관계) 영상 후반부 21분~ 부터 설명해주시는데요, em.flush()와 em.clear()를 통해 1차캐시에서 조회하지 않고, 실제 DB쿼리(select쿼리 호출)를 통해 조회해올 수 있기 때문입니다.

 

강의에서도 잠깐 언급하시지만, 이 부분은 지연로딩과도 연결되어 있어서 섹션8.프록시와 연관관계 관리

를 수강하시면 의문이 해소되실 것 같아요.

 

감사합니다.