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

hungryo님의 프로필 이미지
hungryo

작성한 질문수

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

게시글 조회 5 - 페이징 처리 (QueryDSL)

페이징 정렬 문의

작성

·

329

1

이전 페이징 섹션에서 Pageable로 조회할때는 정렬 기본 조건이 ASC 라 순차적으로 조회되는거는 이해 했는데요,
QueryDSL에서 PostSearch를 이용한 페이징에서는 정렬 조건이 없는데 기본이 DESC 인거 같습니다. 어디서 설정되는지요..?
이 부분도 기존 Pageable과 같이 id 1번 값부터 나올꺼라 기대했었습니다.
 
 
추가로 PostSearch에 페이징 조건만 들어가 있는데 보통 조회 조건 필드 Condition 클래스와 Paging 관련 클래스를 상속해서 사용할까요? PostSearch 처럼 다른 도메인 조회/페이징 처리할때마다 동일하게 페이지 관련 정보를 입력할꺼 같지는 않아서요.
 
감사합니다.

답변 1

1

호돌맨님의 프로필 이미지
호돌맨
지식공유자

안녕하세요?. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

1. 정렬처리는 PostRepositoryImpl에서 QueryDSL로 만들때 박아서 사용했습니다.

2. Paging은 상속받아서 사용하는것도 방법입니다.
그런데 조회 조건 필드는 생각해봐야합니다. 말씀하신대로 조회 조건이 도메인마다 달라질 수 있습니다. 또한 일반적으로는 조회 조건 네이밍을 Entity 컬럼과 일치시키지도 않기때문에 그렇습니다.
사실 이런 이유 때문에 1번 질문에 있어서 정렬 조건을 PostSearch에 넣지 않은 것도 있습니다.

감사합니다.

hungryo님의 프로필 이미지
hungryo
질문자

답변 감사드립니다!

정렬 박아논거 왜 못봤을까... 상당히 민망하네요...ㅋㅋ

2번은 제가 질문을 잘못한듯하네요.

도메인마다 각각 조회 조건에 대한 클래스를 만들고 페이징 클래스만 공통으로 상속해서 사용 가능하지 않을까하는 질문이였습니다. QueryDSL 사용할때 일반적인 방법인지해서요.

추가로 심플한 케이스가 아니라 동적 조회 조건을 요구하면 컨트롤러에서 Pageable로 받는 경우는 거의 없을꺼 같다 생각이 드네요.

 

호돌맨님의 프로필 이미지
호돌맨
지식공유자

네, 저도 도메인별로 Search클래스를 따로 만들고 있습니다. 페이징 클래스는 귀찮아서 따로 상속처리 안했네요..

hungryo님의 프로필 이미지
hungryo
질문자

의견 감사드립니다!

hungryo님의 프로필 이미지
hungryo

작성한 질문수

질문하기