인프런 커뮤니티 질문&답변
디폴트 정렬 조건 추가하고자 하는 경우
작성
·
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 파일로 관리해야 한다





