📝 github. jpabasic3
로직에 따라 필요한 정보가 다르므로 Member를 조회하면서 Team을 항상 함께 조회할 필요가 없다. 비지니스 로직에 따라 Member에 대한 정보만 필요하기도 하고, Member를 조회하면서 Team에 대한 정보도 필요할 때가 있기 때문이다. 따라서 Jpa에서는 프록시와 지연로딩을 통해 지원한다.
em.find( )
em.getReference( )
Member referenceMember = em.getReference(Member.class, member.getId());
System.out.println("referenceMember.id = " + referenceMember.getId());
// 이때까지 쿼리문 나가지 않음
// id 값은 em.getReference()에서 이미 사용되었으므로 그때 저장된 값을 가져올 수 있음.
// 따라서 쿼리문 나가지 않음
System.out.println("referenceMember.username = " + referenceMember.getUsername());
// username은 DB에 있음. referenceMember(가짜)에는 데이터 없음
// 따라서 이때 쿼리문을 날려서 username 데이터를 가져옴