작성
·
49
0
도메인 설계 질문드립니다.
레포지토리 계층
에서 항상 엔티티와 매핑되는 정보를 조회하는게 아니라 그룹함수를 사용해 데이터를 뽑을 수 있잖아요. 결과를 담는 VO 객체를 별도로 만들어야 할까요? 아니면 DTO를 만들어야 하나요
파라미터가 5개 이상 될 수 도있는데, 파라미터도 VO나 DTO를 따로 만들어야 하나요? 만들어야 한다면 VO로 해야하나요 DTO로 해야하나요
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Wind Thomas님, 도메인 설계에 대한 질문에 답변 드리겠습니다.
레포지토리 계층에서 그룹함수를 사용해 데이터를 추출할 때는, 결과값을 담기 위한 객체가 필요할 수 있습니다. 이때, 데이터를 단순히 전달하기 위한 목적이라면 DTO(Data Transfer Object)를 만드는 것이 적절합니다. DTO는 주로 데이터를 외부로 주고 받는 용도로 사용되며, 특정 요구사항에 맞춰 데이터를 가공해서 전달할 때 유리합니다. VO(Value Object)는 데이터의 불변성을 보장하고 비즈니스 로직을 포함할 수 있기 때문에, 결과를 단순히 전달하기 위한 목적에서는 DTO를 사용하는 것이 맞습니다.
파라미터가 5개 이상일 경우에는, 가독성과 유지보수를 위해 하나의 객체로 묶는 것이 좋습니다. 이 경우에도 단순한 데이터 전송을 목적으로 한다면 DTO를 사용하는 것이 일반적입니다. DTO는 계층 간 데이터를 옮길 때 사용되므로, 다양한 레이어에서 활용 가능합니다. VO는 주로 비즈니스 로직이 적용된 값 객체를 의미하므로, 전달이나 저장 목적으로는 DTO를 사용하는 것이 더 적절합니다.
Spring Data에서의 레포지토리 관련 문서와 그룹 함수 및 쿼리에 대한 정보는 아래 링크를 참조하실 수 있습니다:
Spring Data Repository Documentation
추가적으로 궁금하신 점이 있거나 도움이 필요하시면 언제든지 말씀해 주세요!