publicList<OrderFlatDto>findAllByDto_flat() {returnem.createQuery( "select new jpabook_v2.jpashop_v2.repository.order.query.OrderFlatDto(o.id, m.name, o.orderDate, o.status, d.address, i.name, oi.orderPrice, oi.count)" +
" from Order o"+" join o.member m"+" join o.delivery d"+" join o.orderItems oi"+" join oi.item i",OrderFlatDto.class).getResultList();}
장점 : 쿼리 한번
단점
쿼리는 한번이지만 조인으로 인해 DB에서 애플리케이션에 전달하는 데이터에 중복 데이터가 추가되므로 상황에 따라 V5 보다 더 느릴 수 도 있음!
애플리케이션에서 추가 작업이 크다.
페이징 불가능
OrderFlatDto 나 OrderItems 관련 : 페이징 가능할 수도 있지만 Order에 대해서는 페이징 불가능.
=>DB에서는 여전히 중복된 데이터가 포함된 테이블이 있기 때문.
ex) DB : 4, 4, 11, 11 주문번호에 따라 이렇게 저장되있는데
우리가 원하는 것은 4,11 이다. 그래서 페이징으로 (0,2) 을 하면 4,4가 나와버린다.