新入社員のプログラマの原です。
入社してから2ヶ月が経ち、仕事には慣れてきましたがまだまだ学ぶことが多く、失敗しながら学んでいます。
今回は、仕事で学んだActiveRecordを紹介しようと思います。
■ActiveRecordって何?
ActiveRecordを簡単に説明するとデータベースにアクセスして値を取得するためのインターフェイスの一つです。
いわゆる、O/Rマッピングと呼ばれるもので、データベースとのやり取りを簡単にしてくれるものです。
いわゆる、O/Rマッピングと呼ばれるもので、データベースとのやり取りを簡単にしてくれるものです。
![]() |
MVC(Model View Controller)で言うところのM(Model)に相当するものになります。 |
■ActiveRecordの構成
ActiveRecordは、以下のような形に沿った動きをします。
■ActiveRecordのメリット・デメリット
一般にテーブルにアクセスするためには、SQL文を直接書かなくてはいけません。
よって、常に修正漏れや修正間違いを意識しながら開発をおこなわなければなりません。
この問題を解決するために開発されたのがO/Rマッピングと呼ばれるもでのであり、ActiveRecordはこの一つになります。
例えば、SQLとActiveRecordの違いを見てみましょう。
ActiveRecordでは、SQLとは違い、SELECT等を呼び出す時に毎回テーブル名を記述する必要がありません。
よって、常に修正漏れや修正間違いを意識しながら開発をおこなわなければなりません。
この問題を解決するために開発されたのがO/Rマッピングと呼ばれるもでのであり、ActiveRecordはこの一つになります。
例えば、SQLとActiveRecordの違いを見てみましょう。
ActiveRecordでは、SQLとは違い、SELECT等を呼び出す時に毎回テーブル名を記述する必要がありません。
![]() |
SQLとActiveRecordでSELECTを指定した場合の処理 |
![]() |
ActiveRecordは、モデルクラスにある$table_nameにテーブル名を設定することで この名前のテーブルから検索する仕組みになっています。 |
さらに、データベースの種類によるSQL文の違いをライブラリが吸収してくれるので、特定データベースに合わせたアプリケーションコードを記述する必要がなくなり、依存を少なくすることができます。
しかし、SQL文を直接書かなくてもいいとは言ったものの、パフォーマンスチューニングやデバックをおこなうときにはSQL文を書かないといけません。
その他のデメリットとしては、モデルクラスの1オブジェクトが1つのレコードに対応するので、SELECTで全件取得など大量のレコードを取得する際はオブジェクトが大量に生成されるため管理が難しくなります。
しかし、SQL文を直接書かなくてもいいとは言ったものの、パフォーマンスチューニングやデバックをおこなうときにはSQL文を書かないといけません。
その他のデメリットとしては、モデルクラスの1オブジェクトが1つのレコードに対応するので、SELECTで全件取得など大量のレコードを取得する際はオブジェクトが大量に生成されるため管理が難しくなります。
■ActiveRecordのFindersのオプション
SQLのSELECTやWHEREと同じものが用意されています。
例えば、下記のようなものがあります。
ActiveRecord SQL
・select ー SELECT
・conditions ー WHERE
・group by ー GROUP
・order ー ORDER
※これ以外にも用意されています。
■まとめ
ActiveRecordは、SQL文の煩わしさを避けられ、データベーステーブルとの関係がわかりやすくなる便利なものです。
ActiveRecordは、PHPやRubyなど向けにライブラリが用意されているので、すぐ導入することが出来ます。
自分も使ってみて、理解しやすかったので、是非使ってみてください。
■まとめ
ActiveRecordは、SQL文の煩わしさを避けられ、データベーステーブルとの関係がわかりやすくなる便利なものです。
ActiveRecordは、PHPやRubyなど向けにライブラリが用意されているので、すぐ導入することが出来ます。
自分も使ってみて、理解しやすかったので、是非使ってみてください。
採用情報
コメント
コメントを投稿