강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

유승현님의 프로필 이미지
유승현

작성한 질문수

실전! Querydsl

스프링 데이터 페이징 활용1 - Querydsl 페이징 연동

디폴트 정렬 조건 추가하고자 하는 경우

작성

·

216

0

페이징 쿼리를 요청 받았을 때,
디폴트로 제일 마지막에 날짜(끌올 기능도 넣고 싶어 orderAt이란 LocalDate 프로퍼티 추가)를 기준으로 디폴트를 넣고자 합니다

 

public Page<Post> getPagePostBySearch(
List<District> districts, PostSearchCondition condition, Pageable pageable){
return applyPagination(pageableWithOrderAt(pageable),
query -> query
.selectFrom(post)
.join(post.category, category).fetchJoin()
.join(post.seller, account).fetchJoin()
.join(post.district, district).fetchJoin()
.where(
defaultCond(districts),
searchCond(condition)
));
}

 

private PageRequest pageableWithOrderAt(Pageable pageable) {
List<Sort.Order> orders = pageable.getSort().get().collect(Collectors.toList());
orders.add(new Sort.Order(Sort.Direction.DESC, "orderAt"));
return PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(orders));
}

 

이때 이렇게 입력 받은 pagable로 부터 PageRequest를 새로 만들어 적용해 주었는데,

pagable로 부터 모든 sort를 변환해서 가져온다음에 다시 적용하는것은 비효율적인 것 같아 다른 좋은 방법을 적용하고 싶은데,

잘떠오르지 않아 질문드립니다.

 

더 좋은 방법을 적용할수 있는 힌트를 얻을 수 있을까요?

답변주시면 감사드리겠습니다.

퀴즈

스프링 데이터 JPA 사용 시 순수 JPA와 비교하여 개발 생산성 측면에서 얻는 주요 이점은 무엇일까요?

모든 쿼리를 수동으로 복잡하게 작성해야 한다

기본 CRUD(저장, 조회 등) 메서드를 인터페이스만으로 자동으로 제공받는다

모든 동적 쿼리 구현이 항상 완전히 자동화된다

데이터베이스 연결 설정을 직접 XML 파일로 관리해야 한다

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 유승현님

저도 다른 방법이 떠오르지 않네요.

혹시 더 나은 방법을 아시는 분 있으면 답변 부탁드립니다.

감사합니다.

유승현님의 프로필 이미지
유승현

작성한 질문수

질문하기