「リポジトリパターン」でドメインモデル内にリポジトリという概念でオブジェクトの保管庫を設けると大変楽になります。 リポジトリをドメインモデルに持ち込んだ後、必ず次に気なるのは、リポジトリへの追加・削除などの変更をコミットするのはいつか?ということです。 リポジトリにAを入れて、Bを入れて、Cを削除したらエラーになったのでAを入れる前に戻したいのに、Aを入れた後にコミットされてたら面倒ですね。 こういった一連の処理を一つの作業単位にまとめるのがUoWパターンです。(参考:ファウラーさんのUoW解説) 「モデルの状態を変化させる責任はハンドラに持たせる」でドメインモデルへ変更を加える処理を実行する責任をハンドラに集約させるルールにしました。この一番のメリットは、ドメインモデルへの変更度合いの作業単位(UoW)を定義できることでした。 例えば、もし、あるユースケースで1つの既存の商品を削除して、