Как получить совокупные объекты? - PullRequest
3 голосов
/ 03 июня 2010

В DDD репозиторий заботится о сохранении и извлечении доменных объектов, а также служит набором совокупных корней. Мой вопрос заключается в том, как вы извлекаете информацию для тех дочерних сущностей (скажем, из БД) Агрегата, где базовое правило Repository должно содержать коллекцию Агрегированных Корней (родительский объект), а не дочерних объектов?

Например:

Пользователь (родительский объект) Заказы (дочерний объект)

Объект домена пользователя хранится в пользовательской таблице, а заказы хранятся в другой таблице.

По сути, получение объекта домена может выглядеть следующим образом:

<?php
$userRepos = new UserRepository();
$user = $userRepos->find($userId);
?>

Как тогда получить дочерний объект (Заказы) сущности пользователя как часть совокупности пользователей?

1 Ответ

2 голосов
/ 03 июня 2010

Я считаю, что, хотя репозитории содержат ссылки только на совокупные корни, совокупные корни будут содержать ссылки на свои дочерние объекты (объекты-значения). Таким образом, фабрики, которые генерируют агрегированные объекты, будут создавать эти «внутренние» ссылки между агрегированными корнями и объектами Value, и тогда в репозитории нужно будет разместить только совокупный корень. Тогда это просто вопрос извлечения этих дочерних объектов после извлечения Aggregate Root из репозитория (с помощью простого API-интерфейса getter).

...