Copyright © 2023 - All right reserved by Junpei K.

Photo by Martin Sanchez

    🖌️ Table of Contents

    🖌️ TOC

  1. O/Rマッパーとは
    O/Rマッパ...
  2. インピーダンスミ...
    インピーダ...
  3. ORMの例
    ORMの例

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

O/Rマッパーとは

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

出典:e-Words

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

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

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

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

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

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

ORMの例

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

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