결과를 담을 DTO클래스를 따로 만든다- 왜냐하면. repository로 찾아온 결과는 Page오브젝트로 받아지기 때문에, Page 오브젝트 타입안에있는 Entity객체를 DTO타입으로 변환하고 -> 그걸 다시 list로 만드는 작업이 다른 Entity에서도 동일하게 이루어지기 때문이다. 코드의 중복을 줄일수있게 설계한다!
서비스 단에서는 - entity를 DTO로 바꾸어주는 default메소드를 만들고, Impl에서 이것을 활용하여 처리해줄 것이다.
1)
우선 뷰 단에서 넘어오는 PageRequest객체를 받는다. 이 객체는 다양한 파라메터들( 페이지 개수, 그리고 앞으로 추가될 검색 파라메터들) 을 한번에 모아서 전달해주는 역할을 하게 될 것이다. 지금은 page의 번호, 단위 (size)만을 받고, Sort할 조건을 넘겨주면 pageRequest객체를 static 생성자로 만들어서 리턴해주도록 만들었다.
2) repository에 넘겨서 쿼리쏜다!
3) 쿼리의 결과는 Page<DTO> 타입이므로, 이것을 변환한다. 아까 만든 PageResultDTO의 생성자 & 상속받은 디폴트 메소드를 이용한다.
테스트결과 잘 찾아오고 있음을 볼 수있다!
댓글 없음:
댓글 쓰기