##そもそも、O/Rマッピングとは。
オブジェクト/リレーショナルマッピング(O/RマッピングやORMと略されることもあります)とは、アプリケーションが持つリッチなオブジェクトをリレーショナルデータベース(RDBMS)のテーブルに接続することです。ORMを用いると、SQL文を直接書く代りにわずかなアクセスコードを書くだけで、アプリケーションにおけるオブジェクトの属性やリレーションシップをデータベースに保存することもデータベースから読み出すこともできるようになります。
Railsガイド
要するに、users
の情報を取得したいときはSQLを使用する場合、
SELECT * FROM users ;
で本来全件取得するはずですが、O/Rマッピングを使用すると
user.all
のように、railsではActiveRecordのおかげで、SQLを書かずにusersの中身を全件取得できるようになります。
他にもよく使用する
.find_by(name: 'TARO')
のようなメソッドは
SELECT * FROM users WHERE name = "TARO";
このようなSQLと同等の結果が出ます。
上記のように、本来はSQLを書いていた処理のような煩雑なデータベース操作の作業を減らすことができます。
このように便利というメリットがありますが、デメリットもいくつかあります。
#####1. 知っておいて損がないSQLを知らなくてもCRUD処理をかけてしまう。
#####2. 遅い、メモリ消費が大きい。
#####3. 複雑な処理が必要なときはSQLよりも難しい。
他にも、特定DBの機能が使用できない等のデメリットがありますが、直感的にデータの検索ができることや、データベースの変更時にソースコードの修正が必要ない等のメリットもあります。
僕自身SQLの勉強をほとんどせずに勉強を進めていたので、業務でjava、kotlinで開発を進めるにあたり、SQLの知識が必要になる場面が多く初めは全くわからず混乱をしていました。
最近ではWebフレームワークには標準搭載されていることが多く、各言語に合わせた構文を知る必要がありますが、対応できる範囲であれば積極的にO/Rマッパーの使用をしていきたいと思っています。
###参考
https://qiita.com/gomiryo/items/6d448c500749f91242d2
https://railsguides.jp/active_record_basics.html