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

cudodevv님의 프로필 이미지
cudodevv

작성한 질문수

실전! 스프링 데이터 JPA

Pageable에서 sort 내부 property에 대한 유효성 검사

작성

·

174

0

안녕하십니까 영한님.
강의 유익하게 잘 들었습니다. 덕분에 궁금증이 많이 해결되었습니다.


다름이 아니라, 제가 Pageable를 사용한 페이징 기능을 테스트 해보는 과정에서 sort의 property에 실질적인 entity 정보가 노출된다고 생각되어 고민에 빠진 상태입니다.

 

  1. 페이징 관련된 파라미터를 dto로 받게되면 유효성 검사는 가능하나 sort의 순서를 보장하기 어려워 추가적인 파라미터가 필요하다고 생각됨.

  2. pageable로 받은 후 for문을 돌려 유효성 검사를 하게 되면 하위의 단계로 나눠지는 불편함
    1) controller에서 dto로 유효성 검사를 위한 for문
    2) entity는 service에서만 사용하게끔 유도하기 위해 controller에서는 유효성 검사가 끝난 dto를 service로 넘겨서 entity로 재조립하는 for문

    등등 여러가지 방법들을 고민해보다 질문드립니다.
    실질적으로 실무에서 사용되는 Paging 기법이 있거나 개선 사항이 있으면 공유해주시면 감사하겠습니다.

답변 2

1

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

안녕하세요. cudodevv님

복잡한 경우에는 결국 DTO를 통해서 별도로 정렬 정보를 받아서 처리하는 방법을 자주 사용합니다.

이후에는 프로젝트와 구성마다 다르기 때문에 본인에게 맞는 방법을 사용하시면 될 것 같아요.

감사합니다.

 

0

안녕하세요 cudodevv 님, 인프런 AI 인턴이에요.

페이징과 소팅 기능을 사용하는 과정에서 검증과 유효성 확인에 어려움을 겪고 계신다는 것을 이해합니다.

일반적으로는 다음과 같은 방법을 사용하여 유효성 검사와 정렬을 동시에 처리하는 것이 권장됩니다.

  1. DTO를 사용하여 페이징 및 소팅 정보를 전달합니다.
  2. 컨트롤러에서 DTO를 받고 유효성 검사를 수행합니다.
  3. 검증이 완료된 DTO를 서비스로 전달합니다.
  4. 서비스에서는 유효성이 확인된 DTO를 사용하여 필요한 데이터 변환 또는 엔티티 접근 등의 작업을 수행합니다. 이때, 소팅 정보를 이용하여 정렬을 수행할 수 있습니다.

다만, 소팅에 관련된 엔티티의 정보가 외부로 노출되었을 때에 대한 우려가 있다면, 추가적인 데이터 변환 또는 정렬 로직을 작성하여 소팅에 사용되는 프로퍼티를 제어할 수 있습니다.

실무에서 사용되는 페이징 및 소팅 기법은 많이 다양하기 때문에, 구체적인 요구사항과 상황에 따라 유연하게 적용하는 것이 중요합니다. 필요한 경우 DTO나 서비스 레이어에서 추가적인 변환 또는 정렬 로직을 제공하여 원하는 결과를 얻을 수 있도록 설계하시면 됩니다.

더 구체적인 도움을 드리기 위해서는 사용하시는 프레임워크나 기술 스택에 대한 정보를 알려주시면 더 정확한 답변을 드릴 수 있습니다. 감사합니다!

cudodevv님의 프로필 이미지
cudodevv

작성한 질문수

질문하기