Aggregate Root — «главная» сущность aggregate. Внешний код никогда не хранит ссылки на child entities напрямую — только на Root.

Root:

  • имеет глобальную идентичность (OrderId);
  • является единственной точкой входа для операций над aggregate;
  • отвечает за поддержание инвариантов;
  • контролирует создание и удаление child entities.

Пример: Order — Root, OrderLine — child. Клиентский код не может напрямую вызвать line.change_quantity(5) — только через order.update_line_quantity(line_id, 5). Это защищает инвариант «total = сумма line total’ов».

Repository работает только с Root: OrderRepository.find_by_id(order_id) -> Order.

Синонимы

RootКорень агрегата

Не путать с

← ко всему глоссарию