II-16-4. ORマッピングの仕組み

オブジェクト指向アプリケーションのデータとして取り扱うオブジェクトと、リレーショナルデータベースに格納されるレコードとの対応を取るための仕組みであるORマッピングについて、基本的な考え方やオブジェクトとレコードの対応関係、OSSによるORマッピングの実装例について解説する。

【学習の要点】

* オブジェクト指向言語を用いてリレーショナルデータベースを利用するアプリケーションを開発した場合、オブジェクトとデータベースのデータ構造の違いが問題となる場合がある。

* ORマッピング(Object Relational Mapping)はオブジェクトとリレーショナルデータベースの相互変換を行う仕組みである。

* ORマッピングではクラスがテーブル、インスタンスが行、インスタンスの属性が列に対応する。

図II-16-4. ORマッピング

【解説】

1) オブジェクト指向とリレーショナルデータベース

オブジェクト指向言語を用いてリレーショナルデータベースを利用するアプリケーションを開発した場合、データ構造がアプリケーション内とデータベース内に二重に存在することになる。これらのデータ構造の間に互換性がない(インピーダンスミスマッチ)ため、データ構造間の変換処理が必要となる。また、変換処理のほかにも、アプリケーション内のデータとデータベース内のデータの同期をとる処理、データの一貫性を確保するための仕組みなど、煩雑なプログラムが必要となる場合が多く、開発者の負担となりやすい。

2) ORマッピング

ORマッピングとは、オブジェクト指向言語におけるデータ構造と、リレーショナルデータベースのデータ構造の違いを吸収し、相互変換を可能とする仕組みである。OSSを含め様々な実装が存在し、無償で利用可能なものも多い。これらを利用することで開発者の負担を削減することができる。

3) ORマッピングの基本

ORマッピングの利用方法として、多くのライブラリ/フレームワークに共通する要素を以下にあげる。

* オブジェクト指向のクラスは、データベースのテーブルに対応する。

* インスタンスは、データベースの行に対応する。

* インスタンス属性は、データベースの列に対応する。

* データの検索結果はインスタンスのセットとして返却される。

* データの更新は、検索によって得られたインスタンスの属性値を変更することによって行う。

4) ORマッピングの実装

ORマッピングを実現するライブラリ/フレームワークの例を以下にあげる。

* JPA(Java Persistent API)

EJB3の仕様の一部であり、EJB3に準拠したコンテナで利用することができる。J2SE 5.0仕様で導入されたアノテーション(メタデータとして注釈を記入すること)を利用してクラスとテーブルを関連付ける。

* Hibernate

Javaで利用可能なORマッピングフレームワークのうち、最も広く利用されているものの一つ。Hibernate本来のAPIのほかにJPAに準拠したインタフェースも提供する。

* iBatis

検索に利用するSQLを設定ファイル内に明示する、という特徴を持つORマッピングフレームワークでありJavaから利用できる。SQLの知識を生かした性能チューニングが行いやすい。

* ActiveRecord

Ruby on Railsに含まれているORマッピングライブラリ。クラスとテーブルの関連付けを規約によって行うため、設定ファイルやソースコードの記述量を大幅に削減できる。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン