Java, Spring/스프링부트와 JPA 활용 2
4-7. 주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화
app0a
2022. 9. 11. 23:21
//order, orderitem, item 다 조인해서 한번에 가져오는 것
orderItems 조인하는 과정에서 oi 개수만큼 데이터 뻥튀기 된다. (앞에서 한 내용.)
당연히 이렇게 4row가 조회된다.
일대다 조인했기 때문에 다 쪽 개수에 맞춰짐(조인의 속성 (일쪽이 다쪽에 개수 맞춰짐(중복으로 생성됨.).)).
V6의 장점 : 단 한번 쿼리로 된다. ->
order를 기준으로 페이징 불가능, oi를 기준으로 페이징 가능 (앞에서랑 똑같음.)
하지만 이 때 반환 타입을 OrderQueryDto로 맞추고싶다. OrderFlatDto를 ORderQueryDto로 맞추자.
-> 어떻게든 발라내자.
훑어만 보자. 메모리에서 돌림.
장점 : 쿼리 1번
중복판단기준을 orderId로 정해준다.
페이징 안되는 이유 : 만약 데이터 3개 가져와라 ->
여기서 1,1,2 세 개를 가져온다. -> order 기준으로 페이징 안됨.
열이 지금 oi 기준이므로 oi기준으로는 페이징이 가능하다.