我想了解'聚合根'的概念。數據庫和聚合根的存儲庫模式
令我困惑的事情之一是我不應該直接訪問子實體而不訪問其聚合根。例如,假設我有一個計算機實體和一個硬件實體。
據我瞭解,我不應該直接直接訪問硬件實體。我應該通過它的聚合根(這是一個計算機實體)訪問一個硬件實體。
比方說,我有一個控制器,使用存儲庫和查詢計算機實體。
class Controller_Test {
public function loadHardware($computerRepository)
{
$computer = $computerRepository->find_by_id(1);
$hardware = $computer->hardware; // lazy load
}
}
如果我正在使用數據庫,我將最終執行兩個查詢。一個用於計算機,另一個用於硬件。
在我的資源庫中保存「loadComputerWithHardware
」以保存查詢號是否合理?它是否違反DDD規則(通過連接兩個表來查詢計算機和硬件)?
如果我想要一臺帶有一個查詢的硬件的計算機,該怎麼辦?正如我的問題所述,是否違反了'loadComputerWithHardware'或'findWithHardware'? – Moon
如果硬件是聚合的一部分,那麼它應該由計算機的存儲庫檢索。 –