-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
쿼리가 강의보다 더 나오고 있습니다.
23.03.23 19:12 작성 조회수 808
6
"/api/v2/simple-orders " 이 url로 호출했을 때,
(1) order테이블에서 가져오는 쿼리 1번 => (2개의 데이터)
(2) member 쿼리 1번 * 2
(3) delivery 쿼리 1번 * 2
해서 총 5번이 나오는 걸로 알고 있습니다.
근데 현재 로그에서 총 쿼리가 7번이 나가고 있습니다. 코드를 따라쳐보면서 했는데도 왜 다르게 나가는지 원인을 짐작하기가 힘듭니다.
현재 제 쿼리는
(1) order 테이블에서 가져오는 쿼리 1번
(2) member 쿼리 1번
(3) delivery 쿼리 1번
(4) delivery id 조건절로 order 찾는 쿼리 1번
(2)~(4)번 한 번 더 반복
이렇게 해서 총 7번 쿼리가 나가게 됩니다.
쿼리만 보고 어떤 부분때문에 더 나가게 됐는지 짐작할 수 있을까요? 엔티티 간의 연관관계 매핑은 강의를 보면서 했기 때문에 제가 중간에 놓쳤나 생각이 들기도 하네요ㅜ 원인을 짐작하기가 어렵습니다.
select
o1_0.order_id,
o1_0.delivery_id,
o1_0.member_id,
o1_0.order_date,
o1_0.status
from
orders o1_0
join
member m1_0
on m1_0.member_id=o1_0.member_id fetch first ? rows only
2023-03-23T19:03:54.387+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL :
select
m1_0.member_id,
m1_0.city,
m1_0.street,
m1_0.zipcode,
m1_0.name
from
member m1_0
where
m1_0.member_id=?
2023-03-23T19:03:54.390+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL :
select
d1_0.delivery_id,
d1_0.city,
d1_0.street,
d1_0.zipcode,
d1_0.status
from
delivery d1_0
where
d1_0.delivery_id=?
2023-03-23T19:03:54.393+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL :
select
o1_0.order_id,
o1_0.delivery_id,
o1_0.member_id,
o1_0.order_date,
o1_0.status
from
orders o1_0
where
o1_0.delivery_id=?
2023-03-23T19:03:54.395+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL :
select
m1_0.member_id,
m1_0.city,
m1_0.street,
m1_0.zipcode,
m1_0.name
from
member m1_0
where
m1_0.member_id=?
2023-03-23T19:03:54.396+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL :
select
d1_0.delivery_id,
d1_0.city,
d1_0.street,
d1_0.zipcode,
d1_0.status
from
delivery d1_0
where
d1_0.delivery_id=?
2023-03-23T19:03:54.397+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL :
select
o1_0.order_id,
o1_0.delivery_id,
o1_0.member_id,
o1_0.order_date,
o1_0.status
from
orders o1_0
where
o1_0.delivery_id=?
답변을 작성해보세요.
3
0
dyl0115
2024.02.02
2024년에도 글쓴이 분과 동일하게,
"(4) delivery id 조건절로 order 찾는 쿼리" 때문에
총 7번 쿼리가 나가는데, 저만 그런걸까요?
0
literate_t
2023.07.24
홀리몰리 저도 이 문제 있어서 대체 뭐가 문제였을까 살피다가 질문 올리려고 했는데 이미 있었군요! Delivery에서 order을 로딩할 필요가 없는 걸로 보아 버그이지 않나 싶네요.
0
codesweaver
2023.03.25
안녕하세요. 감자님, 공식 서포터즈 codesweaver입니다.
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
구글 드라이브 업로드 방법 링크
주의: 업로드시 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.
감사합니다.
세승
2023.03.31
동일한 상황이 ordersV2() -> api/v2/orders 를 호출했을 때도 발생합니다.
order -> member -> delivery -> orderitems -> item -> (2) -> item -> ( 1 ) ->member -> delivery -> orderitems ->item -> (2)->item 순서로 sql이 출력되어야하는데,
order -> member -> delivery -> order -> orderitems -> item -> (2) -> item -> ( 1 ) ->member -> delivery -> order -> orderitems ->item -> (2)->item
굵게 칠해진 order가 'delivery id 조건절로 order 찾는 쿼리' 에 의해 수행됩니다.
강의자료에 배포된 코드와 차이점은 없어보이는데, 무슨 차이점이 있는 건가요?
codesweaver
2023.04.03
이규태 님이 남겨주신 링크의 내용처럼
하이버네이트 버전이 6으로 오르며 발생하는 문제인 것 같습니다.
일단 다음 강의로 진행해주시기 바랍니다 :)
답변 4