BE/JPA
Querydsl - 조인 (페치 조인)
오봉봉이
2022. 9. 17. 23:41
728x90
조인 - 페치 조인
페치 조인은 SQL에서 제공하는 기능은 아니다.
SQL조인을 활용해서 연관된 엔티티를 SQL 한번에 조회하는 기능이다.
주로 성능 최적화에 사용하는 방법이다.
페치 조인 미적용
지연로딩으로 Member, Team SQL 쿼리 각각 실행
@PersistenceUnit
EntityManagerFactory emf;
@Test
void fetchJoinNo() {
em.flush();
em.clear()
// LAZY 했기 때문에 Team은 조회하지 않는다.
Member findMember = queryFactory
.selectFrom(member)
.where(member.username.eq("member1"))
.fetchOne()
boolean loaded = emf.getPersistenceUnitUtil().isLoaded(findMember.getTeam()); // Membe객체에서 Team이 들어가 있는지 확인하는 메소드
assertThat(loaded).as("페치 조인 미적용").isFalse();
}
페치 조인 적용
즉시로딩으로 Member, Team SQL 쿼리 조인으로 한번에 조회
@Test
void fetchJoinUse() {
Member findMember = queryFactory
.selectFrom(member)
.join(member.team, team).fetchJoin()
.where(member.username.eq("member1"))
.fetchOne()
boolean loaded = emf.getPersistenceUnitUtil().isLoaded(findMember.getTeam()); // Membe객체에서 Team이 들어가 있는지 확인하는 메소드
assertThat(loaded).as("페치 조인 적용").isTrue();
}
- 사용방법
- join(), leftJoin() 등 조인 기능 뒤에 fetchJoin() 이라고 추가하면 된다.
인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90