ひがやすを技術ブログ

電通国際情報サービスのプログラマ

続ドメインモデル

多くのケースでは新規でDB設計できるケースはまれで、
既存資産を流用して開発を進める事になると思いますが
そこでドメインモデルとERモデルを同一視して表現するのは、
かなり厳しいと思います

まず、ドメインモデルが何をさしているのかが人によって違ので、ここではより広い意味で、ドメインを何らかの形で表しているものをドメインモデルと呼ぶことにします。
あるドメインを永続化の方法などを気にせず、モデリングしたものを厳密なドメインモデルとします。
厳密(Strict)なドメインモデルは、永続化の方法は気にしていないので、例えば、RDBMSを使う場合は、ERモデルとは別のものになります。この2つを同一視するのは、もちろん無理です。
次が、軽量(lightweight)なドメインモデル。軽量なドメインモデルでは、永続化の方法を気にしながら、モデリングを行ないます。RDBMSを使う場合は、ERモデルとほぼ同じになるように意識してモデリングを行ないます。軽量なドメインモデルとERモデルは同時に設計します。
最後が、レガシーなドメインモデル。レガシーDBをそのまま使い、JavaのモデルをレガシーDBに合わせる方法。レガシーDBもドメインの構造をあらわしたものなので、広い意味で言えば、ドメインモデルといってもいいんじゃないかと思います。
軽量なドメインモデルとレガシーなドメインモデルは、ドメインモデルとERモデルはほとんど同じものになります。
振る舞いをどこに持たせるのかは、こちらに書いてあります。
既存資産を流用する場合は、既存部分はレガシーなドメインモデルで、新規部分は軽量なドメインモデルを使う形が、使いやすいのではないかと思います。
既存資産を流用する場合でも、厳密なドメインモデルは使えるはずですが、実際に使うと結構苦労するんじゃないかと思います。