2013-05-06 2 views
1

다음과 같은 시나리오에서 정말 고민 중입니다.루트 집계에 너무 많은 일대 다 관계가 포함되어 있는지 확인하는 방법은 무엇입니까?

사용자 집계가 있다고 가정 해 봅시다. 사용자는 1 개 이상의 그룹, 메시지, 친구, 사진 갤러리 등을 만들 수 있습니다. 이제는 그룹, 메시지, 친구, 사진 갤러리가 각자 자신의 집합체 그룹으로 구성되어야합니다. 그룹, 메시지, 친구, 사진 갤러리 등의 사용자 속성을 보유하는 것과는 대조적으로이 섹션 각각에 IList <> 속성을 ​​포함하는 사용자 엔터티를 만드는 것은 비합리적입니다. 어떤 접근 방식이 DDD 원근법? 엔티티 수화에 대해서도 생각하고 있으며 사용자 엔티티에서 모두 검색하는 대신 필요에 따라 그룹, 메시지 등을 얻는 것이 더 합리적이라고 생각됩니다. 이 시나리오를 처리하기 위해 권장되는 방법은 무엇입니까?

답변

4

귀하의 특정 비즈니스 도메인에 대해 잘 모르는 경우에도 User 클래스를 그 아래 모든 항목과 통합 된 일종의 신의 집합으로 만드는 것은 매우 잘못 들립니다.

엔티티를 루트와 함께 큰 그룹으로 그룹화하는 것은 비즈니스의 작동 방식에 달려 있습니다. 예를 들어 PhotoGallery은 그 아래에 많은 Photo 개체가있는 집계 루트 일 수도 있고 PhotoGalleryPhoto은 둘 다 별도의 집계 루트가 될 수 있습니다.

예를 들어 사진을 항상 PhotoGallery (1 집계 루트)으로 수집, 처리 및 처리하는 사진 개발 회사를 운영 할 수 있습니다.

또는 소셜 네트워킹 사이트를 실행할 수도 있습니다. Photo은 전체 갤러리 (2 개의 골재 뿌리)를로드 할 필요없이 일반적으로 공유하고 사용할 수 있습니다.

귀하의 사업 영역에 따라 귀하의 사업 내용이 달라질 수 있습니다. 당신은 언제나 빨기를 볼 수 있고, 일방적으로 시도하고 그것이 어떻게되는지, 그리고 나서 리팩터링을 볼 수 있습니다.

+0

사용자 엔터티는 다른 집계에 IList 속성을 포함하지 않지만 다른 집계 (예 : 그룹, 메시지, 친구 등)에는 사용자 엔터티에 대한 속성이 포함됩니까? 나에게 이것은 사용자 프로필에서 메시지, 그룹 등을 만드는 사용자가 보이지 않기 때문에 조직적으로 가장 이해하기 쉬운 것 같습니다. 다른 집계는 각각 사용자 인터페이스의 다른 섹션과 관련됩니다. – user1790300

+0

집계 루트는 다른 엔티티 및 값 객체의 콜렉션을 가질 가능성이 큽니다. 친구와 같은 집계의 경우 친구에게 사용자에 대한 참조가있는 것이 효과적 일 수 있습니다 (강력한 결합은 친구의 의도가 항상 한 사용자의 친구임을 나타냅니다). 그러나 메시지와 같은 객체의 경우 메시지를 사용자에게 너무 강하게 결합합니다. 메시지가 원격 시스템, 게임 또는 도메인의 다른 항목에 속할 수있는 경우 이상적이지 않을 수 있습니다. –

관련 문제