두 개의 엔터티 User 및 Item이 있다고 가정 해 봅니다. 이 두 엔티티 간의 도메인에서 유일한 동작은 사용자가 항목을 좋아할 수 있다는 것입니다. 사용자가 원할 수있는 아이템의 수에 제한이 없으므로,이 다 대다 관계는 커질 수 있습니다.도메인 기반 디자인 : 대용량이지만 동작이 적은 관계 모델링 방법
사용자가 모델에서 좋아하는 항목의 목록 또는 다른 방법으로 실적을내는 것이 바람직하지 않다고 생각합니다. 그 이유는 잠재적으로 큰 항목 컬렉션을로드해야하기 때문입니다. 하나의 항목 만 추가하십시오. 도메인 디자인의 관점에서 볼 때 항목 또는 사용자 컬렉션의 존재를 요구하는 동작이 없으므로 각 엔티티를 해당 필드에서 다른 엔티티 참조로 가져 오는 것도 의미가 없습니다.
사용자가 좋아하는 항목 목록과 항목을 좋아하는 사용자 목록을 UI에 표시해야하므로이 관계를 유지해야합니다. 요구 사항은 읽기 모델에서 제공 할 수 있지만이 관계를 유지하기 위해 여전히 도메인 개념이 필요하므로이를 지속 할 수 있습니다.
내가 생각해 볼 수있는 한 가지 방법은 집계의 관계 유형을 소개하고, UserLikeItem을 말하고, 메소드 user.like (item)가 UserLikeItemRepository를 사용하여 유지할 수있는 UserLikeItem의 인스턴스를 반환하는 것입니다.
유효한 해결책입니까? DDD에서 이러한 유형의 크고 비 행동적인 관계를 모델링하는 자연스러운 방법은 무엇입니까?
'User' IMO에 대한 메소드 일 필요는 없지만 솔루션을 좋아합니다! 또한 아이템이 좋아 졌던 시간, 어떤 컨텍스트에서와 같은 추가 정보를 캡처 할 수 있습니다. 동일한 AR을 다른 것과 마찬가지로 사용할 수도 있지만, 더 나은 이름을 찾아야 할 수도 있습니다. – guillaume31
나는 아마도 내가 추가 할 수있는 유일한 것은 Item에 'LikeCounter'라는 것 뿐이므로, 'UseLikeItem' 데이터 소스를 치지 않고 아이템에 대한 총 개수를 표시 할 수 있습니다. –
트랜잭션 객체 또는 도메인 이벤트 "UserLikedItem"은 우리가 계속하기 위해 우리에게 주었던 것과는 조금 다른 것 같습니다. –