【发布时间】:2014-02-24 09:57:25
【问题描述】:
我正在尝试理解“聚合根”的概念。
让我感到困惑的一件事是,我不应该直接访问子实体而不访问其聚合根。例如,假设我有一个计算机实体和一个硬件实体。
据我了解,我不应该直接直接访问硬件实体。我应该通过它的聚合根访问一个硬件实体,它是一个计算机实体。
假设我有一个控制器,它使用存储库并查询计算机实体。
class Controller_Test {
public function loadHardware($computerRepository)
{
$computer = $computerRepository->find_by_id(1);
$hardware = $computer->hardware; // lazy load
}
}
如果我使用的是数据库,我最终会执行两个查询。一个用于计算机,另一个用于硬件。
在我的存储库中使用“loadComputerWithHardware”来保存查询次数不是很有意义吗?是否违反 DDD 规则(通过连接两个表来同时查询计算机和硬件)?
【问题讨论】:
标签: domain-driven-design repository-pattern aggregateroot