Collection2 [SpringBoot] JPA Collection 페이징 처리 앞 JPA Collection 페치 조인 최적화 방법은 데이터가 뻥튀기 되기에 페이징 처리에 어려움이 있었다. 하지만, 다른 방법을 사용하면 Collection 페이징 처리가 가능한데 다음과 같은 방법을 따르면 된다. 방법 1. @XToOne(OneToOne, ManyToOne) 관계에 대해선 기존의 페치 조인을 활용한다. (컬렉션은 지연 로딩) @Override public List findAllWithMemberDelivery(Pageable pageable) { QOrder order = QOrder.order; QMember member = QMember.member; QDelivery delivery = QDelivery.delivery; return jpaQueryFactory .select(.. 2024. 1. 29. [SpringBoot] JPA Collection 페치 조인 최적화 Collection은 @ManyToOne가 아닌 @OneToMany를 사용하는 변수에 사용된다. 하지만, @OneToMany. 즉, 일대다 관계에서 Collection을 조회하면 데이터가 뻥튀기가 된다. 예를 들어, Order(주문), OrderItem(주문된 아이템)이 있다고 했을 때 관계의 주인은 OrderItem이다. 하지만, 관계의 주인(외래키)은 N인 OrderItem이 갖고 있으므로, Order를 기준으로 조인을 진행하면 데이터가 늘어난다. 그렇기에 반환시 중복된 데이터가 나오게 된다. 따라서, 기존의 페치 조인 최적화 쿼리와는 달리 jpql 혹은 querydsl에서 distinct를 추가 해주어야 한다. @Override public List findAllWithItem() { QOrder .. 2024. 1. 29. 이전 1 다음