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

hsh5349님의 프로필 이미지
hsh5349

작성한 질문수

실전! Querydsl

조인 - on절

.join 사용 시 첫 번 째 파라미터 질문입니다.

해결된 질문

작성

·

390

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예

[질문 내용]
여기에 질문 내용을 남겨주세요.

스크린샷 2023-06-09 오전 3.37.37.png스크린샷 2023-06-09 오전 3.35.12.png

해당 두 코드 모두 같은 쿼리를 발생하고 있고 member.team또한 team 클래스를 바라보고 있습니다.

둘이 동일한 코드라고 생각이 되었고 제 손은 계속해서 2번 째 코드를 작성하고 있는데 강사님께서 member.team으로 작성하신 이유가 있을거라는 생각이 되어 질문드립니다!

혹시 강사님께서 member.team으로 작성하신 이유가 따로 있을까요??

답변 1

1

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

안녕하세요. hsh5349님

우선 해당 문법은 잘못된 문법입니다. 아마도 단순한 상황에서 querydsl이 허용하는 것으로 추정됩니다. 하지만 어떤 문제가 발생할지 알 수 없기 때문에 이 방법은 실행이 되더라도 권장하지 않습니다.

다음은 querydsl 공식 메뉴얼에서 제공하는 조인 가이드 입니다.

QCat cat = QCat.cat;
QCat mate = new QCat("mate");
QCat kitten = new QCat("kitten");
queryFactory.selectFrom(cat)
    .innerJoin(cat.mate, mate)
    .leftJoin(cat.kittens, kitten)
    .fetch();

Querydsl은 JPA가 제공하는 JPQL을 기반으로 작동합니다.

JPQL의 조인은 SQL의 조인과는 약간 다른 부분이 있는데, 바로 (member.team, team)과 같은 방식으로 조인을 해야 합니다. 왼쪽에는 조인의 대상을 연관관계를 나타내는 .(점)을 사용하고, 오른쪽에는 조인된 결과의 별칭을 적어주어야 합니다.

따라서 querydsl에서도 같은 방식으로 사용해야 합니다.

JPQL 조인에 대한 자세한 내용은 JPA 강의에 있는 JPQL을 조인을 참고해주세요.

https://www.inflearn.com/course/lecture?courseSlug=ORM-JPA-Basic&unitId=21722&tab=curriculum

감사합니다.

hsh5349님의 프로필 이미지
hsh5349
질문자

jpql에 대한 이해가 부족했던거 같습니다!!

강사님 감사합니다!

hsh5349님의 프로필 이미지
hsh5349

작성한 질문수

질문하기