簡易ORMフレームワークを作成してみる(12)

DataSetへのORMコンポーネント

前回までで基本的な部品ができたので、実際のORM部分を作成していきたいと思います。ORMは、オブジェクト(O)とリレーショナル(R)DBのテーブルをマッピング(M)するための技術なのですが、もっとも基本的な目的はオブジェクトの永続化を実現するための仕組みと考えられます。

ORMにもいろいろ思想があります。よく知られたところではHibernateiBATISなどのフレームワークがあります。前者はオブジェクトを中心にSQL文を記述しなくても永続化が出来る仕組みでオブジェクト中心のORMです。後者はSQL文が中心で検索結果やパラメータをオブジェクトに変換する仕組みのORMでSQLマッピングと呼んでいるチームもいます。

今回の作成するORMは、.NETの型指定されたDataSet オブジェクトにマッピングするためのもので、基本的にはHibernate型になります。ただ、永続化を行う単位がHibernateの場合は1オブジェクト単位ですが、今回の方式ではテーブル単位に永続化を行います。この粒度は.NETでよく利用されるテーブルモジュールでのデータアクセスと同じものになっています。
.NETで提供されているデータアダプタやテーブルアダプタもテーブル毎の永続化の仕組みを提供しているので、今回作成するDataSetのORMコンポーネントはこれらの機能拡張版のコンポーネントと考えても良いかもしれません。