오봉이와 함께하는 개발 블로그

Querydsl - 조인 (페치 조인) 본문

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

'BE > JPA' 카테고리의 다른 글

Querydsl - Case 문  (0) 2022.09.18
Querydls - 서브 쿼리  (0) 2022.09.18
Querydsl - 조인 (on 절)  (0) 2022.09.17
Querydsl - 조인 (기본 조인)  (0) 2022.09.17
Querydsl - 집합  (0) 2022.09.16
Comments