テクノロジー

2017年12月03日

O/Rマッピングとは

Aws4 request&x amz signedheaders=host&x amz signature=224df7aee6dfe0671bef36d6776a207b38b35ee27511bf80eb05d9adb3484de9

O/Rマッピング

今回はO/Rマッピングについて学んでいきます。
データベースとのやりとりにおいて必須の技術です。ぜひ正しい知識を身につけましょう。

なぜO/Rマッピングが必要か

プログラミングで扱う情報=レコードはデータベース管理システム(DBMS)内に存在するものなので、それらを操作するためにはデータベース言語である SQL を使う必要があります。しかしSQLは書き方が複雑だったり、コード量が増えたりしてしまうという難点があります。
SQLを使わずにテーブル操作やレコード操作が可能になったら楽ですね。
そのための機能が O/Rマッピング なのです。

まず「マッピング」という聞き慣れない言葉から説明していきます。
これは 変換して対応づけるもの という意味です。
例えば日本という国旗から文字に変換すると JPN となります。
逆に文字から国旗に変換すると、以下のような日本の国旗となります。

https://diveintocode.gyazo.com/b7ac956cf2a14c1cf5a428ab6d09dc80

次にO/Rについて説明していきます。
「O」は オブジェクト 、「R」は RDBMS(データベース言語) を指しています。

つまりO/Rマッピングは オブジェクト指向言語とデータベース言語を変換して対応づけたもの と捉えていただけると良いと思います。

https://diveintocode.gyazo.com/e270005976f2f2b6110d249e51195f0a

ActiveRecord

O/Rマッピングを行ってくれる機能を O/Rマッパー と呼びます。
Railsでは ActiveRecord という名前です。

モデルの継承元

モデルをよく見ると以下のようにActiveRecordを継承しているのがわかります。

(app/models/blog.rb)

class Blog < ActiveRecord::Base

AcitveRecordメソッド

オブジェクト指向言語とデータベース言語を変換して対応づける とは、具体的にどのような手段で実現しているのでしょうか。
それは メソッド という手段で実現しています。
AcitveRecordが用意しているメソッドを AcitveRecordメソッド と呼ぶことにします。

AcitveRecordメソッドには大きな特徴があります。それは 実行すると一緒にSQLが実行される ということです。
このことにより、O/Rマッピングの働きをするのです。

いかがでしたでしょうか。今回は概要のみでしたが、AcitveRecordメソッドの役割が少しでも理解していただければ幸いです。

DIVE INTO CODEのことをもっと知ってみませんか?