2011-10-06 2 views
0

저는 DDD를 배우고 있으며 매우 간단한 예제 인 블로그 애플리케이션을 모델링하기를 원했습니다.그 사이에 집합 적 루트와 관계 정의하기

하나의 영역에 대해서는 골재근을 정의하는 것이 다소 혼란 스럽습니다. 나는 확실히의 나는 유일한 것은이 게시물의 컨텍스트 외부에서 말이 없기 때문에 그 코멘트가 값 오브젝트입니다이 예에서

Site 
    has many 
     Blog 
      has reference to Site 
      has many 
       Post 
        has reference to Blog 
        has Category 
        has many 
         Comments 

:

여기에 지금까지 내 모델입니다.

만 집계 뿌리는 데이터베이스 쿼리와 직접 얻을 수 있습니다에 따라 다음

하지만. 다른 모든 것은 순회를 통해 수행되어야합니다.

사이트, 블로그 및 포스트 AR을 만드는 경향이 있습니다. 컬렉션을 트래버스하지 않고 직접 모든 것을 얻고 싶기 때문입니다.

블로그는 정확히 복잡한 도메인 모델이 아니므로 DDD 적용을 실제로 보증하지는 않지만 이러한 관계 유형이 어떻게 모델링되는지 이해하고 싶습니다.

답변

2

집계를 정의해야하는 계층 구조가 있기 때문이 아닙니다. 집계 구조는 계층 구조 내에서 유지하기 위해 변하지 않는 경우 편리합니다.

예를 들어, 블로그의 각 게시물에 고유 한 '슬러그'(Wordpress 스타일을 사용하여 제목이 URL에 표시되도록)한다고 가정합니다. '블로그'엔티티 만이이 불변성을 시행 할 수 있습니다. 비슷하게, 그 경우에는 그것을 합계로 만들고 블로그 엔티티를 통해 게시물을 추가하는 것이 합리적 일 것입니다.

다른 예 : 귀하의 사이트는 공개 또는 비공개가 될 수 있습니다. 이것은 사이트 엔티티의 속성입니다. 그러므로 사이트만이 권한을 부여하거나 기본 객체에 액세스 할 수 없으므로 사이트가 될 집계 루트의 통과를 사용하여 게시물에 액세스해야합니다. 당신이 사이트를 집계 루트를 만들 경우

, 당신은이 같은 URL로 끝날 수 :

http://site.com/myblog/apost

먼저 블로그를 가져옵니다 해당 엔터티에서 사이트의 실체를 검색 할 귀하의 코드 및 블로그 엔티티에서 게시물을 가져옵니다. 하위 항목을 검색하는 방법은 귀하에게 달려 있습니다. 이 모델은 사이트를 검색 할 때 메모리에있는 모든 블로그 게시물을 강제로로드하지 않습니다. 단지 사이트에서 블로그를 가져와 블로그의 게시물을 가져와야합니다.

관련 문제