主に、Javaのフレームワーク周りを触っていると「O/Rマッパー」という言葉を良く聞く機会が多いと思いますし、実際の開発現場でもよく取り入れられています。
O/Rマッパーを使うことになった背景
DBとオブジェクト指向のデータ構造の違い
データベースは、リレーショナルデータ構造を持っていますが、Javaは、オブジェクトになっています。
なので、Javaであれば、RDBに接続する場合は、ResultSetとJavaBeansの詰め替えが必要になってきます。
ただ、この詰め替え作業は項目数が多いとかなり面倒な作業になりますよね。だからこそ「O/Rマッパー」という概念が生まれました。
O/Rマッパーのメリット・デメリット
メリット
O/Rマッパーを使うと、SQLをほぼちまちま書くことなく、JavaBeansのリストで検索結果を取得したり、更新を行ったりすることができます。
デメリット
SQLは書かなくていいが、設定ファイルを更新しなくてはならず、面倒。
注意点
近年はORマッパーが前提のWebアプリケーションフレームワークが主流になっています。(Ruby on Railsなど)
ただ、SQLやデータベースの知識は変わらず重要なのでそちらの勉強も合わせて行う必要もあります。
あるSQLが遅いと言った場合にチューニングすると言った場合や、排他制御を実装したいと言った場合にはSQLやデータベースの知識が必須のためです。
Javaの有名なO/Rマッパーフレームワーク
- Hibernate
- iBatis
O/Rマッパー関連のJava仕様
- JDO
- JPA
JPA
特に、Javaの純正技術として浸透しているのは、「JPA」でしょう。
ORMというよりは、SQLをJavaなりに使いやすくしているという意図で実装されています。
純正技術として、Springを初めとする多くのフレームワークで取り入れられています。
「Ruby on Rails」でのO/Rマッパー
ActiveRecord(アクティブレコード)
Railsが採用するO/Rマッパーになります。
テーブルごとに作成されたモデルクラスを通じて、データベースに接続します。
JavaScriptのORマッパー
Prisma
これが一番有名です。JavaScriptと言えばフロントエンドですが、バックエンドのNode.jsの開発などで使われていたりします。
PHP
ORマッパーライブラリというよりは、フレームワークLaravelが最近流行りでEloquentというORマッパーを使って開発を行います。
この記事へのコメントはありません。