🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

스프링 데이터 JPA 페이징과 정렬 강의 중 LEFT OUTER JOIN 관련

19.12.16 11:46 작성 조회수 335

0

안녕하세요~

영한님 강의는 빠짐 없이 수강하고 있습니다~^^

강의 중 Total Count가 LEFT OUTER JOIN에 의해 뻥튀기되지 않는다는 언급이 있어서요~

조인되는 테이블에 조인될 데이터가 2개 이상인 경우 INNER JOIN과 마찬가지로 2개 Row가 될거라서

LEFT OUTER JOIN인 경우에도 Total Count에 영향을 준다~가 맞을 것 같아서요.

ToOne 관계에서만 해당된다~라는 첨언이 있는 것도 괜찮을 것 같습니다.

혹시 도움이 되셨다면 영한님 친필 사인 북 선물 주시나요? ㅎㅎ

항상 좋은 강의 부탁 드리고, 건강하세요~

답변 3

·

답변을 작성해보세요.

3

권영훈님의 프로필

권영훈

질문자

2019.12.17

안녕하세요~

시간을 넣어드렸어야 하는데 불편하게 해 드려서 죄송합니다~

위 뻥튀기는 LEFT OUTER JOIN에 의해 데이터 개수가 달라지지 않는다고 표현하신 것을 제가 바꿔서 표현했던 것 같습니다. ㅠㅠ

20:09 부분에서 "ToOne 관계인 경우에만~" 이라는 전제가 선행되었으면 어땠을까 하는 생각을 하면서 문의를 올렸었고요~ (물론 예제의 경우는 member, team 관계라 문제가 없습니다~)

교재 38페이지 실습 아래쪽 내용에도 ToOne 관계에만 국한된다는 내용이 한 줄 들어가면 좋겠다~란 생각도 했습니다. --> 카운트 쿼리 분리(이건 복잡한 sql에서 사용, 데이터는 left join, 카운트는 left join 안해도 됨

제가 헷갈렸던 건 아니고 LEFT OUTER JOIN을 잘 모르는 학습자가 있다면 ToMany에도 적용하는 실수를 하지 않을까 하는 마음에서 올려봤는데, 지금 생각해보니 영한님 시간도 뺏고 이 과정을 듣는 분들이 설마 모르진 않겠지란 생각을 지금이라도 해봅니다. ^^

감사합니다~

1

영훈님 고맙습니다^^ 말씀해주신대로 이런 내용을 잘 모르는 분들께는 큰 도움이 되겠네요!

다음 메뉴얼 업데이트 할 때 넣어두겠습니다 ㅎㅎ

다시한번 감사드리고, 문의나 이런 좋은 피드백은 언제든지 환영입니다^^!

1

안녕하세요. 권영훈님^^

좋은 문의를 주셔서 감사합니다. 저도 혹시나 해서 이 부분을 다시 보았는데,

강의 중 Total Count가 LEFT OUTER JOIN에 의해 뻥튀기되지 않는다는 언급이 있어서요~ 

-> 이렇게 언급한 부분을 못찾겠습니다. ㅠㅠ 혹시 몇분 몇초에 언급했는지 알려주시면 도움이 될 것 같아요^^

그나마 유사한 것으로 추정되는 21:33 부분을 보니

select m from Member m left join m.team t 쿼리를 사용하더라구요.

그런데 이 쿼리는 member -> team을 조인하는 쿼리이기 때문에 ManyToOne(다대일) 조인입니다. 따라서 조인될 데이터 수에 따라서 데이터가 뻥튀기(증가) 되지는 않습니다.

대신에 여기서 left 조인을 사용한 이유는 내부 join을 사용하면 member에는 데이터가 있지만 조인할 team에 데이터가 없는 경우 데이터 총 수가 줄어들 수 있습니다. 이럴때 left join을 사용하면 member에는 데이터가 있지만 조인할 team에는 데이터가 없어도, 데이터 총수는 member를 기준으로 유지됩니다.

물론 쿼리가 member -> team 조인이 아니라. 반대인 team -> member 조인이라면, OneToMany(일대다) 관계 조인이기 때문에 말씀하신데로 데이터가 뻥튀기 될 수 있습니다^^

감사합니다.

채널톡 아이콘