ORマッパーとは

RailsのActive RecordとかORマッパーだと思うんですが名前は知ってるけど実際よくわからないなと思って調べました

オブジェクト関係マッピング(英: Object-relational mapping、O/RM、ORM)とは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。

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

まあ詳しいことはwikipedia呼んでください

おそらく言ってることとしては、オブジェクト指向型プログラミングで使用されるモデルと実際のデータベースのテーブルとカラムをマッピングしてくれてる技法

僕はActive Recordしか触ったことがないですが、直にSQLを叩くよりも直感的にデータを取り出せるようになります

例えばRailsアプリケーションでUserモデルとEntryモデルが存在するとします

Userは複数のEntryを持つことができます

Userテーブル
- id
- name
...


Entryテーブル
- id
- user_id
- created_at
...

Userモデルのid: 1のユーザーの最新のブログ記事をActive Recordで取得しようとすると下のようになります

latest_entry = User.find(1).entries.last

これを直にSQLを叩いて取り出そうとすると以下のようになります

SELECT name
    FROM User
WHERE id == 1

まだこれくらいならSQLで書いても大変ではないですが、複数テーブルを使用してデータを取り出そうとすると、個人的にはSQLで書くのは結構しんどいです

サブクエリとか書きたくない、、

ORマッパーのおかげでSQLを意識することなく、オブジェクトの関係からデータを取り出すことができるようになっています

ただSQLどんどん忘れていってるからたまには書くようにしないと、、

余談ですがfind_by_sqlメソッドを使うとrailsでも生のSQLを使用することができます

api.rubyonrails.org api.rubyonrails.org