해결된 질문
작성
·
362
1
안녕하세요!
JPQL로 엔티티 페치조인이 아닌 , 일대다 입장에서 컬렉션 페치조인을 할 경우 -> 데이터 뻥튀기 문제가 발생하여 distinct 키워드로 뻥튀기된 데이터를 없애주어야 했느데요 ,
EntityGraph를 이러한 컬렉션 페치조인에 사용하여도 distinct를 쓴것 처럼 데이터 뻥튀기 문제가 발생하지 않는지 궁금합니다.
감사합니다.
답변 1
0
안녕하세요. khd1692님, 공식 서포터즈 y2gcoder입니다.
먼저 답변에 대한 답을 드리자면 left outer join 을 이용해서 이 문제를 해결한다고 합니다.
그밖에 좀 더 자세한 정보를 원하시면 해당 링크를 참조해주세요 :)
https://velog.io/@meme2367/EnjoyDelivery-%EC%9D%B4%EC%8A%88-1.-%EA%B0%80%EA%B2%8C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A1%B0%ED%9A%8C-%EC%8B%9C-N1%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-Fetch-join-EntityGraph
감사합니다.
저도 찾아본 결과 EntityGraph 와 fetch join의 차이는 앞서 보았던 inner join / left outer join 정도라 같은 문제가 발생할 것으로 보입니다.
2개 이상의 컬렉션을 조회하는 경우는 영한님의 JPA 활용2편을 보시면 좀 더 좋은 해결방법을 알려주시니 추천드립니다.
답변 감사합니다.
함께 제시해주신 링크의 글을 읽어보았는데요 ,
여기서도 inner join을 하는 JPQL 기반 페치조인 방식과 달리
left outer join을 하는 EntityGraph 동작을 이용하여 컬렉션 페치조인을 하는 컬렉션 대상을 [1개만] 명시하여도 문제가 없다는 내용으로 이해하였습니다.
그렇다면 혹시 EntityGraph를 사용하여 이렇게 컬렉션 페치조인을 할 때, 2개 이상의 여러 컬렉션을 명시해도 되는지 추가적으로 여쭤보고 싶습니다.
기존 JPQL 기반 페치조인에서는 distinct로 데이터 뻥튀기 문제를 처리할 수 있었던게 한 컬렉션 까지여서 2개이상의 컬렉션 페치조인은 불가능 한것으로 이해하였는데, EntiyGraph도 동일한지 or 혹은 이부분을 극복시켜주는지 여쭙고 싶스빈다.