O/R マッピング(Object/Relational Mapping)はJavaアプリケーションを開発する際の煩雑な作業を軽減し、開発効率を上げるための仕組みです。 本稿では解決すべき問題点を明確にし、O/R マッピングのデファクトであるHibernateについて解説します。
ほとんどのJavaアプリケーションではデータ管理にリレーショナルデータベース(以下、RDB)を使います。
しかし、オブジェクト指向設計の考え方がベースとなっているJava から、リレーショナルデータベース設計に基づいて構築されているRDBの情報を操作する場合、どうしても「インピーダンスミスマッチ」と呼ばれる構造上のギャップがでてきます。
通常、このギャップをJavaプログラムで実装することになりますが、このロジックが煩雑で冗長になることが多いため、本来開発者が集中すべき、ビジネスロジックに集中できず、開発生産性を著しく低下させる原因になっています。
また、マッピングのロジックを直接、Javaプログラムに埋め込むことで、RDBのテーブル構造が変更された場合や、RDB自体が変更された際に膨大な修正を行わなくてはならないことがあります。
O/R マッピングは、このインピーダンスミスマッチの解決するための仕組みです。 設定ファイルを記載することで、RDBのレコードをJavaから直感的に扱えるオブジェクトに自動変換することが可能であり、プログラミングの効率を上げ、煩雑な手間を軽減することができます。

また、SQLに非常に良く似たクエリ言語、HQL(Hibernate Query Language)を使用することでRDB毎に存在するSQLの方言を吸収することができます。このため、RDB自体を変更する必要がでてきた場合でも直接SQLを修正すると言った作業を行う必要がありません。併せて、各RDB固有のSQLを使用可能なAPI も用意されているためネイティブなSQLを使用することも可能です。このことででJDBCを利用し、ネイティブなSQLを利用している従来のアプリケーションからHibernateへの以降をスムーズに進めることができます。
HibernateではJavaエンジニアが慣れ親しんだシンプルなAPIを提供しているため、多くの時間をついやすことなくAPIを習得することがで きるでしょう。
さらにHibernateでは内部でキャッシュ機能使用することでパフォーマンスの向上がはかられて、エンタープライズレベルのアプリケーションで求められるパフォーマンスに十分対応可能です。
最後にHibernateはO/R マッピングツールのデファクトとして、数多くのプロジェクトでご利用いただいており安定性にも定評があります。