質問: ドメイン駆動のエンティティは、必ずしもテーブルに一致しないケースがあると認識しています。 それを前提に、例えば「1つのエンティティにて複数のテーブルに存在するデータを保持」しても問題ないでしょうか? またリポジトリで処理されるデータが複数テーブルにまたがって問題ないか?についても質問したいです。 **前提条件** * エンティティに沿ってテーブル構造が変更できない(しにくい) * (インフラ層都合でエンティティの定義を自由にできない) **簡易的なテーブル構造の例** ``` ユーザー設定テーブル1: 対象1, 対象2 ユーザー設定テーブル2: 対象3, 対象4 ユーザー設定テーブル3: 対象5, 対象6 ```
回答: クリーンアーキテクチャやヘキサゴナルアーキテクチャのような、ドメインモデルが外部の技術要素に依存しない設計方針を選んだ場合(大抵はそうだと思いますが)、ドメインモデルは自身がどのような形で永続化されるか、関知しません。 従って、1つのエンティティを同じ構造のテーブルに入れようが、複数テーブルに分けようが、構わないわけです。 むしろ、**ドメインモデルからの依存が無いからこそ**、性能などを考慮した自由なテーブル設計が可能と言えます。