little-hands/ddd-q-and-a

エンティティ(ドメイン層)クラスにリリース後属性を追加する改修がありました。改修後のエンティティには必須の属性としたいが、改修前のエンティティには、属性のデータはないため、必須にできないため、NULLまたは空文字を許容するしかないのですが、...

Opened this issue · 0 comments

Question

エンティティ(ドメイン層)クラスにリリース後属性を追加する改修がありました。改修後のエンティティには必須の属性としたいが、
改修前のエンティティには、属性のデータはないため、必須にできないため、NULLまたは空文字を許容するしかないのですが、そう言ったケースはよくあるものなのでしょうか。
データストアがRDBの場合、過去のエンティティのデータに追加する属性カラムに何かしら入れられるなど、できる場合もあるのですが、データストアの種類によってはそういったことが、できないケースもあると思いまして、質問させていただきました。

Answer

必須にするが、勝手にデータを作れないというケースはあると思います。
その場合、「DBからインスタンス生成する時にはバリデーションをかけないが、データ更新時にはバリデーションする」というのが現実解になると思います。