質問: $itemEntity->getName()->value(); $item->save(); } ``` PHPでDDDの実装サンプルを見ると皆このようになっています。 が、iDDD本のサンプルコードを見る限り永続化メソッドにgetterは登場していないように見えます。(但しJavaはよく分かっていないのでコードの意味が理解出来ていないだけかもしれません。) Viewに渡すようなクエリ系はCQSのクエリサービス+DTOの構造にして、getterの役割はDTO側に実装しつつ、コマンド側に徹するエンティティからはgetterを取り除いてより閉じた状態にしようと思ったのですが。
回答: 回答としては、必須ではない、になります。 ドメイン駆動設計はLayered Architectureを推奨しており、 * Domain層 <- Application層 <- Infrastructure層 右側の層が左側の層に依存しています。 > > エンティティをORM固有のオブジェクトに詰め替える必要がある > > > 仰る通りなのですが、上記を理由にEntityにgetterを実装するかどうかを検討するのは、依存の方向が逆になります(Domain層がInfrastructure層に依存している)。 Domain層で定義したEntityをInfrastructur層で保存するのが正しい依存の方向であり、保存したいプロパティは外部からアクセスできる必要がありますので、その一手段としてgetterが実装されていても構いません。