ドメイン駆動設計のエンティティにgetterは必須でしょうか
DDDでエンティティをORM(例えばPHPのLaravel(Eloquent))を利用して永続化する際、リポジトリの実装の中でエンティティをORM固有のオブジェクトに詰め替える必要があるように思うのですが、つまりエンティティにはgetterが必須ということになるのでしょうか?
function persist($itemEntity) {
$item = new Item(); // ORMのオブジェクト
$item->id = $itemEntity->getId()->value();
$item->name = $itemEntity->getName()->value();
$item->save();
}
PHPでDDDの実装サンプルを見ると皆このようになっています。
が、IDDD本のサンプルコードを見る限り永続化メソッドにgetterは登場していないように見えます。(但しJavaはよく分かっていないのでコードの意味が理解出来ていないだけかもしれません。)
Viewに渡すようなクエリ系はCQSのクエリサービス+DTOの構造にして、getterの役割はDTO側に実装しつつ、コマンド側に徹するエンティティからはgetterを取り除いてより閉じた状態にしたいと考えたのですが。