連載 [第1回] :
徹底比較!! O/RマッピングツールO/Rマッピングとは?
2006年6月28日(水)
インピーダンスミスマッチとは?
Javaのようなオブジェクト指向の言語でリレーショナルデータベースを扱う際に、もっとも面倒な作業はオブジェクトとリレーショナルデータベースのマッピング作業です。これは両者の設計思想の違いから生じており、この問題を「インピーダンスミスマッチ」といいます。
Javaにおけるオブジェクト指向は、プログラムをオブジェクトとして設計し、現実世界のモデルに即したものとしてデータモデルを定義します。一方のデータベースでは、正規化という方法を用いて、データの検索/登録/更新処理に最適なモデルを定義します。データベース設計では、現実世界のモデルがどうなっているかは関係なく、あくまでも正規化といった、数学的世界の事情に基づいてモデルが考えられています。
なお、Javaとデータベースの設計思想の違いは、それぞれの役割を果たすために最適な構造であり、どちらの構造が優れているということはありません。
インピーダンスミスマッチを解決するために、表形式のデータをオブジェクト形式のデータに対応付けるマッピングコードを作成する必要があります。この作業はデータ構造が複雑になると大変煩雑な作業になってしまう上、単調な繰り返しである場合が多く、バグを埋め込んでしまう危険性が高くなります。
O/Rマッピングの基本的な流れ
O/Rマッピングは、「オブジェクト」と「リレーショナルデータベースの情報」を対応付けするための技術であり、データベースを利用するためのオブジェクトとデータベースとの間の橋渡しをしてくれます。
O/Rマッピングの機能は個々のソフトウェアによってかなり異なりますが、基本的には以下のような機能を提供してくれます。
- コネクション管理機能
- データベースとの接続やコネクションプーリングが管理できるようになる。
- 自動マッピング機能
- XMLファイルなどの外部ファイルにオブジェクトの属性名とテーブルの列名に関するマッピング定義を設定することによって自動的にマッピング処理を行ってくれます。
- マッピングファイル、DTO、DAOの自動生成機能
- O/Rマッピングツールの提供する自動生成ツールによってマッピングファイル、DTO、DAOといったファイルを自動で作成してくれます。
- 接続情報の管理機能
- JDBCドライバやデータベースの接続情報を、O/Rマッピングツール側で管理してくれます。
- キャッシュ機能
- 一度取得した検索結果をメモリ上に保持しておいて、同じ検索処理が行われた場合は、メモリ上にある検索結果を返します。これによって、データベースへのアクセスを減らし、パフォーマンスがあがります。
また、一般的な「O/Rマッピング」は以下のような流れで処理を行います。
- データベースの接続情報をXMLファイルに定義(データベース設定ファイル)
- クラスのフィールドとテーブルカラムの対応付けをXMLファイルに定義(マッピング・ファイル)
- O/Rマッピングツールがデータベース設定ファイルとマッピングファイルを読み込んで自動的にマッピング処理を行う
- アプリケーションからO/RマッピングツールのAPIを介してデータベースへアクセスする
つまりO/Rマッピングを使いこなすためには、「設定ファイル(接続情報やマッピング定義)の書き方」と「APIの使い方」を理解する必要があります。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。