Если предположить, что ORM (например, Doctrine) не используется внутри репозитория, мой вопрос заключается в том, как правильно создать экземпляры объектов Aggregate? Является ли он созданием дочерних объектов непосредственно внутри репозитория и просто назначает его совокупному корню через его установщики, или совокупный корень отвечает за создание своих дочерних объектов / объектов?
Пример 1:
class UserRepository
{
// Create user domain entity.
$user = new User();
$user->setName('Juan');
// Create child object orders entity.
$orders = new Orders($orders);
$user->setOrders($orders);
}
Пример 2:
class UserRepository
{
// Create user domain entity.
$user = new User();
$user->setName('Juan');
// Get orders.
$orders = $ordersDao->findByUser(1);
$user->setOrders($orders);
}
, тогда как в примере 2 создание заказов выполняется внутри сущности пользователя.