문제

도메인 구동 설계에서 엔티티의 수집 특성은 부분 값을 가질 수 있습니까?

예를 들어 Customer.orders, Post.comments, Graph.vertices와 같은 속성은 항상 모든 주문, 주석, 정점을 포함하거나 오늘의 주문, 최근 의견, 고아 정점을 가질 수 있습니까?

이에 따라 리포지토리가와 같은 방법을 제공해야합니다

GetCustomerWithOrdersBySpecification
GetPostWithCommentsBefore

등.?

도움이 되었습니까?

해결책

나는 DDD가 당신에게 이것을하거나하지 말라고 지시한다고 생각하지 않습니다. 그것은 당신이 구축하는 시스템과 해결해야 할 특정 문제에 크게 의존합니다.

나는 이것에 대한 패턴에 대해 듣지 못했습니다.

주관적인 관점에서 나는 엔티티가 정의에 의해 완료되어야한다고 말하고 (게으른 로딩을 고려) 클라이언트에게 전송 된 데이터의 양을 최적화하기 위해 DTO에 완전히 또는 부분적으로로드 될 수 있다고 말합니다. 그러나 문제가 해결되면 데이터베이스에서 부분 엔티티를로드하는 것이 마음에 들지 않습니다.

다른 팁

도메인 구동 디자인에는 개념이 있습니다 서비스. 특정 데이터베이스 쿼리를 수행하려면 부모 객체에 첨부 된 자식 객체 모음보다 문제를 서비스로 모델링하는 것이 좋습니다.

이에 대한 좋은 예는 여러 사용자가 제공 한 매개 변수를 수락하여 보고서를 작성하는 것일 수 있습니다. 이것을 모델링하는 것이 더 쉽습니다.

CustomerReportService.GetOrdersByOrderDate(Customer theCustomer, Date cutoff);

이것보다 :

myCustomer.OrdersCollection.SelectMatching(Date cutoff);

또는 다른 방법으로 넣으려면 데이터 입력에 사용하는 DDD 모델은보고에 사용하는 DDD 모델과 동일 할 필요는 없습니다..

확장 성 시스템에서는이 두 가지 문제를 분리하는 것이 일반적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top