1/22
結論としては、アンチパターンではなく、おかしくもありません。なぜかというと…(続) まず、エンティティとは、「識別子によって同一性判定するもの」です。識別子はいわゆるメールアドレスでもいいですし、いわゆるIDというものでもよいです。そのため、モデルとしてIDを持つことはおかしくありませんし、エンティティの実装クラスがIDを持つことも問題ありません。 しかし、それをDBに永続化するときにどうするか、は切り分けて考えことができます。リポジトリはインターフェイスがドメイン層で、実装クラスがインフラ層なので、ドメイン層はDB側がどのようになっているか気にしなくてよくなります。 その際、DB側でオートインクリメントされる連番のカラムがあっても、何も問題はありません。リポジトリがエンティティのインスタンスにマッピングする際に、そのカラムを無視すればよいだけです。「かならず連番のidと名の付くカラムが必要」という事情があっても、それは「インフラ層の都合」としてインフラ層に閉じ込め、ドメイン層などその他の層には影響させないことができるのです。 そこで冒頭の質問に戻ると、UUIDをエンティティの識別子として使用して、dbの事情としてインフラ層以外には意識させなくすることができます。むしろこれはレイヤーの責務をうまく取り扱っていると考えられます。
スポンサーリンク
質問はquerie.meからお願いします。さんになんでも質問しよう!
質問
スタンプ
利用できるスタンプはありません。
スポンサーリンク
過去に答えた質問
※利用規約、プライバシーポリシーに同意の上ご利用ください
スポンサーリンク