LoginSignup
1
0

More than 5 years have passed since last update.

ちょっとずつ読むドメイン駆動設計 第ニ部 モデル駆動設計の構成要素 第七章 言語を使用する:応用例2

Posted at

前回の続き

関連を設計

問題は双方向の関連。

検索なんかで関連づけられているだけならRDBのクエリで実現すればよいので、関連は不要。

ビジネスをしっかり理解すれば減らせる関連もありそう。ビジネス上必要ないのに関連付けられているならば削除する。

あとは、循環参照になっている場合が問題。
例では、
[貨物]->[配送記録]->[荷役イベント]->[貨物]
という参照パターン。

解決策としては[配送記録]<>->[荷役イベント]と、配送記録に荷役イベントを含んだリストを与えることで循環参照はそのままだが、実装上問題ないようにしているようです。(これで問題起きないんだっけ?っていう疑問は残りますが・・・)

そして、将来的には、貨物をキーにデータベースを検索するようにするかもしれないとは言っています。
最初からそうしない理由は、記録を問い合わせることが多いとみられるから直接参照しているほうがよいということ。記録への問い合わせが稀であれば、データベースへの検索の方にしたほうが、オーバーヘッドは減るでしょう。
そこは設計におけるトレードオフということですね。

集約の境界

独自の同一性があるものをルートに選択しています。
そのルート(例では[貨物])からどこまでを境界にするかが検討されていますね。
基準としては、値オブジェクトはもちろん境界内、エンティティでも独自の同一性がない、グローバルにアクセスされないものは境界内に設定していますね。

明日も引き続き読んでいきます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0