2024年04月20日

質問者さん

ユーザとタグをエンティティとして実装している ユーザが集約ルート ユーザ作成時にタグを付与すると、タグが作成される テーブルはユーザテーブル、タグテーブル、ユーザとタグの関連管理テーブルの3つがある といった場合、ユーザ作成処理はユーザリポジトリに、タグ作成処理はタグリポジトリに書くのだと思いますが、ユーザとタグの関連を管理する処理はどこに記載すべきでしょうか

2024年04月23日

松岡@ログラス/DDD,アジャイル

松岡@ログラス/DDD,アジャイルさん

それは集約の設計に依存します。 画像のパターン①は、ユーザ付与タグというオブジェクトはユーザーエンティティの子オブジェクトとして保持し、ユーザーリポジトリにユーザーエンティティのインスタンスごと渡します。 ユーザー付与タグオブジェクトはタグIDを保持します。 https://gyazo.com/dcdb780629e3633105d4a29bb8b7830a パターン②の場合は、ユーザー付与タグエンティティはユーザーIDとタグIDを保持し、リポジトリもユーザーリポジトリとユーザー付与タグリポジトリに分かれます。 どのようにしてこのパターンどちらにするかを判断するかと言うと、集約の範囲によるメリットデメリットで判断します。 集約を大きくするメリット → 整合性を確保する実装とテストが簡単になる 集約を大きくするデメリット →処理するデータ量が増える →排他制御の範囲が大きくなる 集約を跨いだ場合の整合性を確保する実装はこちらをご覧ください。 https://little-hands.hatenablog.com/entry/2021/03/08/aggregation

松岡@ログラス/DDD,アジャイルさんに 質問してみましょう!

松岡@ログラス/DDD,アジャイル

松岡@ログラス/DDD,アジャイル

DDDや設計にお困りの方はDMにてご相談ください。講義、モブモデリングやコーディングなどご要望に合わせた進め方でサポートします(オンライン)。 YouTube: https://www.youtube.com/channel/UCbHtbIUxtfGjrDy1WcqxExw

松岡@ログラス/DDD,アジャイルさんが

最近答えた質問

03月31日

続き質問

ご回答ありがとうございます! ドメインモデル図から一通りドメインのクラスを実装して次はインフラ層の実装をしようと思ったときに感じた質問でした。あるユースケースではこのオブジェクトは更新するけどこっちは更新しない。となると集約を分けたほうがインフラ層の実装は楽になりそうだ。ただ、ドメインの知識としては大きな集約の理解のほうが直感的ではある。みたいな場面で悩んでおりました。

03月27日

集約の見つけ方について質問です。集約を大きな範囲にした時に、インフラ層の実装がつらくなってきたと言う状況は、集約の範囲を見直すサインになりますでしょうか? あるいは実装が辛いのは技術力不足と捉えるほうが自然でしょうか?

03月18日

factory メソッドについて教えていただきたいです。 ある entity が 別の entity のfactory メソッドを持つことはありでしょうか?