질문이 있습니다!
504
13 câu hỏi đã được viết
안녕하세요. 게시판의 댓글을 계층형으로 짜려고 시도하고 있는데 헷갈려서 복습겸 다시 강의 듣다가 질문드립니다.
우선 처음 게시판을 조회할때 최상위 부모 댓글들을 페이징 처리하여 가져옵니다.
그 후 최상위 부모 댓글의 자식들도 페이징 처리하여 가져오고 싶은데 그냥 페이징으로 가져오면 자식들의 수많큼 쿼리를 날리게 되어 현재 강의의 방식대로 가져오는 방법을 사용해보았는데 이 방법은 특정 ID들에 속한 값들을 모두 조회한 후 gropingBy를 통해 분리했기 때문에 페이징이 불가능한거 같은데 제가 잘못이해하고 있는건가요?
혹은 제가 접근법이 잘못되었는지 궁금해서 질문드립니다.
감사합니다.
Câu trả lời 5
2
안녕하세요. 동명님
아쉽지만 원하시는 방법은 SQL에서 지원하지 않습니다. 따라서 JPQL로도 문제를 해결할 수 없습니다.
결국 각각의 orderId 각각 마다 각각 쿼리를 따로 실행하셔야 합니다.
실무에서 트래픽 상황에 따라 다음과 같은 방법으로 해결합니다.
1. 성능이 중요하지 않은 경우: 내부 시스템에서 사용하는 어드민이라면 그냥 쿼리를 orderId 수 만큼 실행합니다.
2. 성능이 중요한 경우: 첫번째 페이지만 가지고 있는 데이터를 별도의 캐시에 각각 말아둡니다. 예를 들어서 a,b,c,가 있으면 a,b,c 각각 첫 10건의 데이터만 따로 가지고 있는 것이지요. 그리고 이후에 a에 더보기를 누르면 a 데이터만 테이블의 다음 페이지에서 추가로 조회합니다. 보통 첫 페이지를 보는 유저는 매우 많지만, 그 다음 더보기를 누르는 유저는 상대적으로 적기 때문에 첫 페이지를 캐시에 잘 말아두는 방법을 활용하면 좋습니다.
감사합니다^^
0
아 제가 아직 많이 부족해서 설명을 제대로 못한거같네요.
이 부분에서 where in 절을 사용하여 orderIds들의 값들을 가져오는데 가져올때 orderId 하나하나마다 가져올 데이터 개수를 제한할 수 있는지 물어본거였어요.
그래서 그냥 일단 다 가져오고 개수에 맞게 짤라서 해결했습니다!
private Map<Long, List<OrderItemQueryDto>> findOrderItemMap(List<Long> orderIds) {
List<OrderItemQueryDto> orderItems = em.createQuery(
"select new jpabook.jpashop.repository.order.query.OrderItemQueryDto" +
"(oi.order.id, i.name, oi.orderPrice, oi.count)" +
" from OrderItem oi" +
" join oi.item i" +
" where oi.order.id in :orderIds", OrderItemQueryDto.class)
.setParameter("orderIds", orderIds)
.getResultList();
return orderItems.stream()
.collect(Collectors.groupingBy(OrderItemQueryDto::getOrderId));
}
SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류
0
48
1
@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.
0
80
3
강의 관련 외 질문입니다.
0
112
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
2
132
1
BeanCreationException
0
111
3
Update 후 UpdateMemberResponse 매핑할 때
0
77
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
129
2
페이징 + 검색조건 관련해서 질문드립니다.
0
94
1
Query Dsl Q파일 질문입니다.
0
111
1
루트 쿼리라는것은
0
85
1
메서드를 분리하는 기준
0
94
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
145
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
122
2
fetch join과 영속화와 OSIV의 관계
0
125
2
Distinct 사용 전 결과에 대한 의문
0
142
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
77
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
103
2
dto 필드 속 엔티티 여부
0
85
1
뷰템플릿 사용 시
0
108
2
Result 클래스 관련 질문
0
74
1
@PostConstruct 프록시 관련 질문드립니다
0
107
1
DTO 대신 Form 사용은 안되나요?
0
153
1
OSIV ON 상태일 때
1
112
1
fetch join VS fetch join 페이징 궁금증
0
216
2

