ORMは、アプリのコードとDBの表をつなぐ翻訳役。
SQLを毎回そのまま書かなくても、コード上のオブジェクトやメソッドを通してDBを扱いやすくする仕組みです。
ORMの役割
ORMは「Object Relational Mapping」の略です。ざっくり言うと、プログラムの中で扱うオブジェクトと、リレーショナルDBの表を対応させる仕組みです。
たとえばコードでは User や Post のような単位で扱い、DBでは users テーブルや posts テーブルの行として保存します。ORMは、その間の変換を助けます。
データを User のようなまとまりとして扱える。
オブジェクトとテーブル、プロパティと列を対応させる。
内部ではSQLを作り、DBへ問い合わせることが多い。
コードと表の橋渡し
Webアプリのコードでは、ユーザーや投稿を「ひとつのデータのかたまり」として扱いたくなります。一方、リレーショナルDBでは、データは表の行と列で保存されます。
ORMを使うと、コード側の扱いやすい形と、DB側の保存しやすい形を行き来しやすくなります。画面やAPIを作るときに、DBの細かい書き方だけへ意識を取られにくくなるのが利点です。
SQLとの関係
ORMを使っても、DBとのやり取りが消えるわけではありません。多くの場合、ORMが内部でSQLを組み立て、DBへ送っています。
そのため、ORMはSQLの代わりというより、SQLを直接書く量を減らし、アプリのコードからDBを扱いやすくする道具と考えると自然です。
細かい条件や性能を意識して、DBへの指示を自分で書く。
コード上のメソッドやモデルを通して、DB操作を書きやすくする。
ORMを使う場合でも、SQLとDBの考え方を知っていると詰まりにくい。
よく出てくるORM
JavaScriptやTypeScriptの開発では、PrismaやDrizzleのようなORMを見かけることがあります。ほかの言語にも、RailsのActive Record、PythonのSQLAlchemy、PHPのEloquentなどがあります。
ORMによって書き味や得意なことは違いますが、共通しているのは「コードとDBの間を扱いやすくする」という役割です。まずは名前を覚えるより、何を楽にしているのかを押さえると理解しやすいです。
TypeScript開発でよく使われるORM。型と組み合わせて扱いやすい。
SQLに近い感覚を残しながら、型安全に書きやすいORM。
言語やフレームワークごとに、似た役割のORMが用意されている。
ここまでのまとめ
ORMは、アプリのコードとリレーショナルDBの表をつなぐ翻訳役です。コードに近い形でデータを扱いやすくし、内部ではSQLを組み立ててDBへ問い合わせます。
ORMはDB操作を楽にしてくれる道具ですが、裏側にSQLとDBの表があることを知っておくと、エラーや性能の問題にも向き合いやすくなります。