前からあった違和感
(リレーショナル)データベースのモデリングとドメインのモデリングは違うっていうのを前から思っていて、それからDBとドメインのオブジェクトをそのまま結びつけるようなORマッパーにはずっと違和感を覚えていたのだ。
だからMyBatisみたいなSQLマッパー(っていう呼び方が合ってるのかは分からない)の方が好きだったりする。
必要に応じてドメインモデルへの詰め替えをデータアクセスレイヤでやることも抵抗ない。
じゃあその違和感って何だろう
これまでは、「データベースにとっての最適化とドメインモデルは必ずしも一致しないから」っていう表現をしていたんだけど、先日たまたま会社の研修が大きなヒントになって理解が進んだ。
データはそれ自体では意味を持たない
講師の方が「データ」と「情報」という表現をしていて、
データ: それ自体では意味のないもの 情報: データを加工して意味(価値)を持たせたもの
あぁ、なるほどな、と。
データベースのモデリングはデータを扱うもので、ドメインモデルは情報を扱うものなんだな、と。
そりゃあ違うよね、と。
※講義の内容はデータベースに特化したもので、自分の中で勝手につながっただけである
まとめ
実際にはデータベースに全く要件的な(意味のある)要素が入ってこないなんてことはありえないし、システムの規模やフェーズによっては敢えて2つのモデリングを切り離さないという選択もあると思う。
それがORマッパーなのかもしれない。
詳しくないけど、Railsなんかもそうだよね多分。
ただデータ周りを整理や設計する時だったり見直す時、データと情報ってことを意識すると結構役に立つかもしれない。
いずれにせよ、自分の中では割りと大きめなブレークスルーだったかも。