1

CustomerOrder 두 개의 집계 루트와 "공유"엔티티 Address으로 구성된 모델에 대한 시나리오를 고려하십시오. PhysicalAddress, PostOfficeBoxAddressPrivateBagAddress :엔티티 공유가 필요한 집계

또한 Addressabstract입니다 다음과 같은 서브 클래스를 가지고 있습니다.

Customer은 일종의 주소록으로 구성된 많은 주소를 가질 수 있습니다. 주문시 고객은 주소록에서 Address을 선택하여 배달 주소로 사용합니다.

초기 생각은 두 엔티티간에 주소를 공유하는 것이었지만 이후로는 각 불변량을 관리하는 데 문제가 발생할 수 있으므로 선택을 취소했습니다.

내가 할 수있는 또 다른 옵션은 Address이라는 두 개의 계층 구조를 고객 주소 또는 배달 주소로 사용하는 것입니다. 이것은 많은 반복 코드가 있기 때문에 다시는 올바르게 보이지 않습니다.

이 상황을 어떻게 적절하게 모델링합니까?

답변

2

엔티티는 고객이나 주문과 같이 자신이 존재할 수 있어야하는 것입니다. 은 주소가 실체없는 그러나, 주소 값 형식이며, 따라서 그 자체로 존재할 수 없다 :

  1. 주소는
  2. 당신은 정의 할 수 있습니다 엔티티 내에서 집계되는 값 유형으로 존재 할 수 있습니다 주소 계층 구조를 도메인의 값 유형으로 사용하지만 많은 엔티티가이를 사용할 수 있습니다.

우리는 우리가 같은 도메인에 1 개 주소 계층 구조 값 유형을 만들려면 MoneyType 등

솔루션이 될 것 주소로 이러한 형태의 기업을 통해 모든 시간을 오는 것을 찾을 수 있습니다. 그렇다면 엔티티는 해당되는 경우 속성으로 주소를 가질 수 있습니다.

+0

답변을 주셔서 감사합니다. 그러나 ORM 프레임 워크 JPA를 사용하여 구현할 수없는 것으로 보입니다. @Embeddables (값 객체)가 상속을 사용할 수 없다는 문제가 있습니다. 나는 다른 해결책을 찾아야 할 것이다. –

관련 문제