1

집계가 매우 복잡하고 집계가 Order입니다. 그것은 집계 밖에서 의미가없는 실체 (예 : OrderItem)를 포함합니다. 그러나이 집계의 일부가 될 엔티티도 있지만이 집계 외부에서 의미가 있습니다 (예 : ShippingMethod 또는 Invoice).DDD : 집계 및 하위 집계

는 오른쪽 (루트의 ID로 전체 집계로드)이 복잡한 집계에 대한 저장소를 가지고도 가능 배송 방법 및 송장을 나열하는 또 다른 저장소를 관리하기위한 CRUD 저장소를 가지고 있습니까?

더 일반적으로, 다른 집합의 부분 집합을 갖는 것이 가능하다 DDD?

+0

사용하여 송장을 검색 할 수 있습니다이 도움을합니까 : HTTP : // 유래 .com/questions/17611635/reference-another-aggregate-root-inside-a nother-aggregate-root/17620246 # 17620246 –

+1

'ShippingMethod'의 데이터를 나타내는 값 객체를 갖는 것이 좋은 생각입니다. 감사합니다. –

답변

2

당신은 고려할 수는 "다른 집합의 부분 집합은," "집계가 다른 집계의 참조를 보관 유지합니다." 주문 및 송장 모두 집계가 이러한 상황에있는 경우 예를

public class Order { 
    private Invoice invoice; 
} 

<class name="Order" table="T_ORDER"> 
    <one-to-one name="invoice" column="INVOICE_ID" /> 
</class> 

를 들어

, 나는 OrderRepository을해야하고 InvoiceRepository.You은

orderRepository.findBy(orderId) 

를 사용하여 주문을 검색 할 수 있습니다 그리고 당신이 할 수있는

invoiceRepository.findBy(invoiceId) 

또는

을 사용하여 송장을 검색
Order order = orderRepository.findBy(orderId); 
Invoice invoice = order.getInvoice(); 

및 ID 참조를 사용하여이 관계를 실현 제안 집계 (http://dddcommunity.org/library/vernon_2011/)를 설계하는 방법에 대한 유명한 글이있다.

public Class Order { 
    private InvoiceId invoiceId; 
} 

<class name="Order" table="T_ORDER"> 
    <component name="invoiceId"> 
     <property name="value" column="INVOICE_ID" /> 
    </component> 
</class> 

당신은

orderRepository.findBy(orderId) 

를 사용하여 주문을 검색 할 수 있습니다 그리고 당신은

invoiceRepository.findBy(invoiceId) 

또는

Order order = orderRepository.findBy(orderId); 
Invoice invoice = invoiceRepository.findBy(order.getInvoiceId()); 
+0

ORM을 사용하여 구현하는 방법 (php 및 doctrine을 사용하고 있습니다)? 엔티티에서 참조하는 ID를 직접 반 패턴으로 간주하지 않습니까? –

+0

나는 php와 doctrine에 익숙하지 않다. 하지만 Java에서 Hibernate와의 일대일 매핑을 사용하여 구현할 수 있습니다 (집계 참조 집계 사례에서). 나는 이드를 안티 패턴으로 참조하고 있는지 확신 할 수 없다.이 문제를 논의하는 기사 나 자료가 있는가? – Hippoom

+0

교리는 Hibernate로부터 크게 영감을 받았습니다. 엔티티에있는 invoiceId와 같은 정수형 속성을 갖는 것은 반 패턴입니다 (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/best-practices.html#don-t에 따라). -map-foreign-keys-to-an-entity. 편집 : 이제는 정수가 아니라 단순히 ID가 포함 된 값 객체를 참조하십시오. –