ORM(Object-Relational Mapping)は、データベース のテーブルを、プログラムの オブジェクト として扱えるようにする 仕組み・ライブラリです。「表の行」と「オブジェクト」を対応づけ(マッピング)します。
ORMを使うと、SQL を直接書く代わりに、慣れたプログラミングの書き方でデータを操作できます。
【ORMなし】SQLを文字列で書く
"SELECT * FROM users WHERE id = 1"
【ORMあり】オブジェクトとして扱う
user = User.find(1)
user.name = "田中"
user.save()
利点と注意点は次のとおりです。
- 利点 … 開発が速い。データ型 の恩恵を受けやすい。データベースの種類の違いを吸収してくれる。
- 注意点 … 裏で発行されるSQLが見えにくく、気づかぬうちに非効率な問い合わせ(N+1問題など)を生むことがある。
便利な一方、「裏でどんなSQLが動いているか」を意識できると、性能問題を避けられます。ORMはSQLを不要にするものではなく、SQLの知識の上でこそ、うまく使いこなせる道具です。