• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.02.21 13:17 작성 조회수 423

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 기본편에 있는 경로 표현식에서 이 부분을 자세히 설명드립니다.

감사합니다.