문제

최근에 Eric Evans Domain Driven Design (매우 유익하고 매우 즐거운)을 읽었지만 책을 완성한 이후 첫 번째 주요 프로젝트에 도착하여 도메인 모델 저장을 처리하는 방법을 얻었습니까?

서비스 / 저장소의 사용과 모델을 어떻게 도울 수 있는지에 감사하지만 모델 저장을 어떻게 처리 할 것인가?

이전 도메인 모델 저장은 다음 방법 호출 구조를 따릅니다.

parentclass.save {

parentclassdb.save

childobject1.save

       ChildObject1DB.Save

childobject2.save

       ChildObject2DB.Save  
  etc etc 

}

이 서비스는 아동 물체에서 적절한 저장 루틴을 호출하는 것을 제어합니까?

도움이 되었습니까?

해결책

DDD에서 도메인 엔티티는 지속성을 처리하지 않습니다. 당신은있어서는 안됩니다 Save() 이상적으로는 방법입니다.

귀하의 저장소에는 그러한 것이 있습니다 Save 매개 변수에서 엔티티 인스턴스를 취하는 메소드 :

public class PersonRepository
{
   //...

   public void Save(Person person)
   {
      this.dataContext.Save(person);
   }

   //...
}

스택에 따라 ORM은 객체 저장을 처리하거나 사람을 저장하기 위해 쿼리를 구성하여 끝나거나 인스턴스 값 등으로 저장된 프로 시저 매개 변수를 채 웁니다.

내가 당신이 한 일을 올바르게 이해한다면, 다른 곳에 도메인 엔티티, 아마도 리포지토리 또는 저장소에서 사용하는 DAL에 넣은 지속성 논리를 이동해야 할 수도 있습니다.

다른 팁

집계 뿌리를 사용하십니까? 그들은 자신의 단체를 저장하는 데 책임이 있습니다.

한 방향으로 많은 수정이 진행되는 경우 도메인 서비스에서 해당 논리를 캡슐화하고 서비스가 집계 루트를 통해 저장을 처리하도록 할 수 있습니다.

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