(springboot) 컬렉션 조회2

reallt·2023년 7월 4일

TIL

목록 보기
16/21
post-thumbnail

  • 기존의 버전3의 페치조인에서와 같이 코드를 짜는 대신, orderItmes와 items 엔티티도 같이 페치조인을 한다. 거기에 추가적으로 distinct를 통해 중복을 제거해준다.

  • jpa에서 distinct를 사용한다고 실제 db에서 중복이 제거되지는 않는다. 그러나 어플리케이션이 작동하고 포스트맨을 통해 조회를 해보면 중복이 제거되어 나오는 것을 알 수 있다. 이런 상황이 일어나는 이유는 db에서는 join한 모든 엔티티들의 모든 값들을 보여주는데 어플리케이션에서는 원하는 값만 조회가 되고, 그 값들은 실제로 중복이 되기 때문이다.

  • 위와 같이 1 : 다 에서 fetch join 할때 페이징 쿼리를 사용하면 메모리에서 적용되기 때문에 데이터가 조금만 많아져도 메모리 아웃이 일어나서 필연적으로 에러가 발생하게 된다.
profile
백엔드 마스터!(지망생)

0개의 댓글