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

김형민님의 프로필 이미지
김형민

작성한 질문수

실전! Querydsl

집합

join()를 작성하지 않아도 자동으로 join을 해주는데 join()을 써주는 이유

작성

·

516

0

join()를 작성하지 않아도 자동으로 join을 해주는데 join()을 써주는 이유가 궁금합니다.

    @Test
    public void group() {
        List<Tuple> result = queryFactory
                .select(member.team.name, member.age.avg())
                .from(member)
//                .join(member.team, team)
                .groupBy(member.team.name)
                .fetch();

        Tuple teamA = result.get(0);
        Tuple teamB = result.get(1);

        assertThat(teamA.get(member.team.name)).isEqualTo("teamA");
        assertThat(teamA.get(member.age.avg())).isEqualTo(15); //10, 20

        assertThat(teamB.get(member.team.name)).isEqualTo("teamB");
        assertThat(teamB.get(member.age.avg())).isEqualTo(35); //30, 40
    }

제가 위와 같이 코드를 수정하여 돌려봤는데 테스트를 잘 통과하였고 생성된 sql에서도 join을 자동으로 해주었습니다. 따로 join()을 쓰신 이유가 있을까요?

답변 1

1

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

안녕하세요. 김형민님

JPQL이 제공하는 명시적 조인과 묵시적 조인의 차이를 먼저 이해하셔야 해당 부분을 이해하실 수 있습니다.

JPA 기본편에 있는 경로 표현식에서 이 부분을 자세히 설명드립니다.

감사합니다.

김형민님의 프로필 이미지
김형민

작성한 질문수

질문하기