DDD(Blue book、Evans)によると、工場は有効な状態で集約ルートを作成する責任があります。これは、技術的なID(mongoDBの世界ではobjectId)とドメインIDを作成できるはずですか?DDDとMongoDB:MongoにObjectIDを作成させてもいいですか?
一方で、これは技術的な詳細のようで、MongoにIDの作成を処理させても大丈夫だと思われます。
一方、id(DDDリポジトリにgetById
を持つ)によってクエリを有効にすると、技術IDがドメインに公開され、ドメインを作成することがファクトリの責任になります。
テクニカルIDとドメインIDの異なるユースケース/オーバーラップなどで私の頭を奪うことはできないかもしれませんが、おそらく私は過激ですが、とにかくあなたの意見に感謝します。
短く: DDDの場合:工場で技術IDとドメインIDを作成できるかどうか
可能な実装:ハイ/ロー(How to set the hilo sequence starting value in MongoDB Norm?)
EDIT: HI/LOの方法は、唯一のリポジトリが知っておくべきものですパーシステンス層に工場を公開したが。なるほど
は感謝
マイナーとは全く関係のないコメントです。 MongoDBは実際にIDを作成しません。クライアント(ドライバ)は(upsert操作を除いて)行います。 –