O/Rマッパーって何だ?設計思想と絡めて解説

O/Rマッパーとは

O/Rマッピングとは、オブジェクト指向プログラミング言語におけるオブジェクトリレーショナルデータベース(RDB)の間でデータ形式の相互変換を行うこと。そのための機能やソフトウェアを「O/Rマッパー」(O/R mapper)という。

e-Words より

きょうは引用から入りましたが、これを言いかえるなら、O/Rマッパーとはバックエンドのプログラムとデータベースの間の「なかだち」の役目を果たすもの、ということです。エンジニア界隈ではぐっとつづめて「ORM」と表現することが多い印象ですね。

インピーダンスミスマッチ

さて、そんなORMは、なぜ必要なのでしょうか?それは、言うなれば「オブジェクト指向と関係データベースとでは価値観が違うから」です。

オブジェクト指向は「現実世界の物事に即したデータモデル」である一方で、関係データベースは「検索やCRUDなどの処理に最適化されたデータモデル」となっている。

オブジェクト関係マッピング

こうしたプログラムの設計思想の違いは「インピーダンス・ミスマッチ」とよばれます。インピーダンス(impedance)は「電流の流れにくさを表す量」も意味することばですが、それに似た「融通の利かなさ」があるわけですね。そのため、ORMの役割は両者のその「インピーダンス・ミスマッチの解消」とも言えます。

ORMの例

そんなORMの例として、いまわたしがよく触っているGo言語では「gorm」や「xorm」、「ent」などが知られています。たとえばxormでは、”id”と”name”という2つのカラムをもつデータベースに対して、Goの構造体を以下のように紐付けることができます。

type Mybook struct {
	Id   int64  `xorm:"autoincr"` // IDは自動採番
	Name string `xorm:"varchar(50)"`
}

返信がありません

コメントを残す

メールアドレスが公開されることはありません。