• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

join에 대해 질문있습니다.

23.01.19 14:10 작성 23.01.19 14:11 수정 조회수 892

0

public List<Order> findAllWithMemberDelivery() {
    return em.createQuery("select o from Order o  ", Order.class).getResultList();
}

이렇게 order만 select해줘도

@GetMapping("api/v3.1/orders")
private List<OrderDto>ordersV3_page(){
    List<Order>orders=orderRepository.findAllWithMemberDelivery();
    List<OrderDto>result=new ArrayList<>();
    for(Order order:orders){
        result.add(new OrderDto(order));
    }
    return result;
}

강의자료와 동일하게 설계해서 뿌려주면

//postman의 결과

[ { "orderId": 4, "name": "userA", "orderDate": "2023-01-19T14:02:41.723635", "address": { "city": "서울", "street": "1", "zipcode": "1111" }, "orderStatus": "ORDER", "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 }, { "itemName": "JPA2 BOOK", "orderPrice": 20000, "count": 1 } ] }, { "orderId": 11, "name": "userB", "orderDate": "2023-01-19T14:02:41.79964", "address": { "city": "진주", "street": "2", "zipcode": "2222" }, "orderStatus": "ORDER", "orderItems": [ { "itemName": "SPRING1 BOOK", "orderPrice": 20000, "count": 3 }, { "itemName": "SPRING2 BOOK", "orderPrice": 40000, "count": 4 } ] } ]

이렇게 원하는 결과가 나옵니다.(물론 item id가 없습니다.)

즉 Order만 select해도 Dto에 설계한대로 정보가 잘 나오는데 o.member 등을 join하는 이유는 item id 등이 필요할 때가 있어서 그런건가요?

답변 1

답변을 작성해보세요.

0

안녕하세요. 김정훈님

이 부분은 성능과 관련이 있습니다.

fetch join에 대해서 다시 복습해주세요.

감사합니다.