• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

컬렉션 fetch join

24.01.12 18:11 작성 조회수 333

0

안녕하세요 강사님

프로젝트 중 궁금한 점이 있어 질문드립니다..!

  1. 6개의 엔티티를 조인해야 하는 상황인데 현업에서도 이렇게 조인을 하기도 하나요? 물론 성능에 따라 다르겠지만 몇개 정도의 테이블을 조인하는 것이 적당할까요?

  2. 컬렉션 패치 조인은 1개까지만 하라고 하셨는데 현재 상황은 3개나 컬렉션이 존재합니다. 이런경우는 어떤식으로 해결하는게 좋을까요?? 강사님께서는 어떤식으로 해결하시는지 궁금합니다 ㅎㅎ


    감사합니다!

답변 2

·

답변을 작성해보세요.

1

안녕하세요. 유선목님

1번 질문

실무에서는 더 많은 테이블을 조인하기도 합니다. 이것은 정답이 없고, 비즈니스 요구사항에 따라서 달라집니다.

2번 질문

이때는 패치 조인을 하지 않고 일반 조인을 사용한 다음에 DTO로 조회를 해야 합니다. 강의 뒷 부분에 관련 내용도 나오니 참고해주세요.

감사합니다.

유선목님의 프로필

유선목

질문자

2024.01.13

답변 감사합니다!!

조회가 아닌 재고를 변경해야 하는 상황에서도 DTO를 조회해서 할 수 있나요?

변경 감지를 사용해야 할 것 같은데 DTO는 엔티티가 아니라서 변경감지 대상이 아닐것 같아서 여쭤봅니다 ㅎㅎ

현재 테이블이 주문과 재고가 멀리 떨어져 있어서 어떻게 해야 할 지 고민입니다..!

 

안녕하세요. 유선목님

두 가지 해결방안이 있습니다.

  1. 엔티티로 조회: fetch join을 사용하지 않고 일반 join을 사용하면서 select from에서 에서 재고를 선택하시면 됩니다.

  2. DTO로 조회: DTO로 조회한 다음에 JPA(JPQL)에서 update 쿼리를 직접 날려서 원하는 데이터를 변경해도 괜찮습니다.

감사합니다.

 

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.12

안녕하세요, 인프런 AI 인턴입니다.

유선목 님의 질문에 대해 몇 가지 기존의 답변들을 찾아보았습니다.

  1. 다수의 엔티티를 조인하는 것이 현업에서 일반적인지와 적절한 조인의 개수에 대해 궁금해하셨는데, 이 부분에 대해서는 직접적인 답변을 찾기 어려웠습니다. 그러나 일반적으로 데이터베이스의 성능과 복잡성을 고려하여 조인의 수를 결정하게 됩니다. 여러 엔티티를 조인해야 하는 상황이라면, SQL의 성능을 확인하고 인덱스 최적화, 쿼리 리팩토링 등의 방법으로 성능을 관리해야 합니다.

  2. 여러 컬렉션이 있는 경우에 패치 조인을 하라고 한 것에 대해 궁금해 하시는데, “컬렉션 페치 조인 질문이 있습니다.“라는 질문에 제공된 답변 내용이 유용할 수 있습니다. 여기서는 @OneToMany 관계가 있는 엔티티를 컬렉션으로 처리하며, 이러한 컬렉션에 패치 조인을 사용하는 것을 ‘컬렉션 페치조인’이라고 설명하고 있습니다.

질문하신 상황에서 컬렉션 패치 조인을 여러 개 사용하고 싶으나, JPA에서는 다수의 컬렉션에 대한 패치 조인을 권장하지 않습니다. 이러한 경우, 각 컬렉션을 따로 조회하거나, 배치 사이즈를 설정하여 성능을 최적화하는 방법을 취할 수 있습니다.

유용하실 만한 답변 링크:

답변에서 컬렉션 패치 조인의 한계와 JPA에서 여러 컬렉션을 다루는 접근 방법에 대해 다루고 있으니 참고하셔서 귀하의 상황에 맞게 적용하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.