2016-10-13 4 views
1

다른 집계와의 관계가있는 새 집계를 작성할 때 관계 집계가 있는지 확인해야합니까? 응용 프로그램 서비스에 있거나 일부 도메인 서비스에 의해 팩토리에 있어야합니까?다른 집계와의 관계가있는 집계 작성시 DDD 일관성 검사

class ApplicationService 
{ 
    public void CreateNewAr(relationArId, relationArId2) 
    { 
     var relationAR = _relationArRepository.getById(relationArId); 
     if(relationAR == null) 
     throw NotFoundException(); 

     var relationAR2 = _relationAr2Repository.getById(relationArId2); 
     if(relationAR2 == null) 
     throw NotFoundException(); 

     var newAr = _newArFactory.CreateFromAr1And2(relationAR.id, relationAR2.id); 
     _newArRepository.Insert(newAr); 
     _uow.Commit(); 
    } 
} 

또는

class NewArFactory 
{ 
    public NewAr CreateFromAr1And2(relationArId, relationArId2) 
    { 
     var relationAR = _relationArRepository.getById(relationArId); 
     if(relationAR == null) 
     throw NotFoundException(); 

     var relationAR2 = _relationAr2Repository.getById(relationArId2); 
     if(relationAR2 == null) 
     throw NotFoundException(); 

     var newAr = new NewAr(relationAR.id, relationAR2.id); 
     return newAr; 
    } 
} 

답변

2

TL; DR은 다음 도메인의 이동. 공장인지 아닌지는 다른 토론입니다.

NewArFactory이 도메인의 변경을 제어하는 ​​경우 NewArFactory은 집계임을 알았습니까?

집합체의 목적은 변경을 제어한다는 점을 기억하십시오. 가능한 구현 세부 사항 일 수 있지만 항상 집계 자체를 유지해야하는 것은 아닙니다. 지속성에서 집계를 검색 할 때 항상 집계 테이블을 가져야한다는 것을 의미합니다 (또는 여러 테이블에서 분할 됨). 리포지토리는 지속성 정보를 사용하여 집계를 만들고 반환하는 데 필요한 데이터 (즉, 엔터티 - VO ID)를 가져올 수 있습니다. 집계 (집계 루트를 통해)는 엔티티의 변경을 제어 한 다음 새 상태가 유지됩니다.

실생활과 같이 도메인에있는 것들은 얇은 공기에서 나타나지 않습니다. 무슨 일이 일어나고 있는지 이해하려고 노력하십시오. 자동차가 조립되고, 제품이 중국에서 우리웨어 하우스에 도착하고, 사용자가 웹 앱에 자신을 등록합니다. 도메인 유비쿼터스 언어 사용과 관련된 사례 및 프로세스의 도메인 표현을 만드는 데 더 나은 환경을 제공합니다. 거기에서; 변경을 제어하기위한 집합체가 나타날 것입니다.

자체 생성 일 수도 있고 다른 집계를 사용할 수도 있습니다. 지속되지 않는 하나의 집계라도 지속되는 집계를 생성 할 수 있습니다 ... Uff,이 것은 테이블의 실제 실제 도메인 컨텍스트 없이는 설명하기가 매우 복잡합니다.

참고 :이 답변을 만들 때 누계가 있었거나 지속되지 않았습니다.

+0

그래서, 당신이 설명하는 경우, 나는 newAR 생성을 위해 모든 necesarry 정보를 가질 관계 1-2AR가 있어야할까요? – Robert

+0

나는 어떤 특별한 경우도 기술하지 않고있다. 나는 단지 도메인에 들어가서 "공장"에 도메인 컨텍스트가 없으며 도메인에서 생성이 무엇을 의미하는지 생각해야한다는 것을 기억하는 것입니다. – jlvaquero