次に問題(2)「インピーダンスミスマッチのあるデータモデルのマッピング」の解決へのアプローチとして、業務データモデルとデータベース・データモデルとを的確にマッピングする方法を説明していきます。
第1回で解説したように、方法論によるアプローチのすれ違いから、データモデルにインピーダンスミスマッチが発生することはご承知のとおりです。インピーダンスミスマッチを埋める振る舞いをO/Rマッピングと呼びます。なお、O/Rマッピングは、問題(1)の解決へのアプローチの中で説明した、カプセル化されているデータベース・レイヤ内に実装することが重要なポイントです。
それでは、具体的にO/Rマッピング処理が一連の処理シーケンスの中のどこで実行されるのかを理解するために、図6を参照してください。
図6は、SELECT問い合わせを実行している例です。処理シーケンスごとの補足説明を以下に示します(図6の数字は、下記表3の説明の数字を示します)。
(1) | 業務クラス1は、必要なデータとなるエンティティ・オブジェクト1を生成する |
---|---|
(2) | 検索条件オブジェクトを生成し、SELECT問い合わせをする際の条件を設定する |
(3) | SELECT問い合わせ処理を行うために、DAO1のインスタンスを生成し、該当メソッドに(1)で生成したオブジェクトを渡す |
(4) | DAO1はO/Rマッピングを行うMapperオブジェクトを生成し、該当メソッドに検索条件オブジェクトとマッピング対象となるエンティティ・オブジェクトを渡す |
(5) | Mapperは検索条件オブジェクトの条件内容を基にSQLを生成し、RDBに問い合わせする(O/Rマッピング処理に該当) |
(6) | RDBからの問い合わせ結果をエンティティ・オブジェクトの各属性にマッピングしセットする(O/Rマッピング処理に該当) |
表3 図6の処理シーケンス補足説明 |
O/Rマッピングには(5)および(6)の処理が該当します。つまり、(5)および(6)の処理内でデータモデル間のギャップを吸収していることになります。
ここまでで、インピーダンスミスマッチを埋めるO/Rマッピング処理の内容を理解できたと思います。O/Rマッピング処理を行うクラスをスクラッチで作成することはもちろん可能ですが、最近では以下のようなフレームワークが登場していますので紹介しましょう。
O/Rマッピング・フレームワークとは、リレーションデータモデルと業務データモデルとの複雑なマッピング処理を効率的かつ簡易に実現するフレームワークです。スクラッチでO/Rマッピング処理を実装することは1つの方法ですが、フレームワークを用いることにより、実装コード削減による開発期間の短縮や変更が発生した場合の高いメンテナビリティーを実現してくれます。
具体的には、以下のような工数および品質的な問題に威力を発揮すると期待できます。
それでは、O/Rマッピング・フレームワークに備わっている基本的な機能を以下に挙げてみます。
O/Rマッピング・フレームワーク基本機能
O/Rマッピング・フレームワークには、本記事執筆時点でさまざまな製品が存在しています。本来ならばそれらの詳細な機能を解説するところですが、@ITでO/Rマッピング・フレームワークの内容を取り上げている記事もあるため、本記事ではどういったO/Rマッピング・フレームワークが存在するのかを紹介するにとどめます(表4)。
製品名 | ライセンス | Webサイト | @ITの記事 |
---|---|---|---|
Hibernate | 無償 | http://www.hibernate.org/ | Hibernate記事 |
Cayenne | 無償 | http://objectstyle.org/cayenne/index.html | Cayenne記事 |
CocoBase | 有償 | http://www.jsys-products.com/product/ | |
iBATIS | 無償 | http://www.ibatis.com/support.html | |
O/R Broker | 無償 | http://orbroker.sourceforge.net/ | |
Torque | 無償 | http://db.apache.org/torque/ | |
Castor-JDO | 無償 | http://www.exolab.org/ | Castor記事 |
PriDE | 無償 | http://pride.sourceforge.net/ | |
JDO | 無償 | http://access1.sun.com/jdo/ | |
Voruta | 無償 | http://voruta.sourceforge.net/ | |
表4 O/Rマッピング・フレームワーク一覧 |
今回は、開発現場で発生するO/Rマッピングに関連した代表的な2つの問題を解決するための方法を説明してきました。次回(第3回)は、「永続化処理分析・設計におけるOOA/DOAを使用した最適な分析/設計パターン」をテーマとして具体的に解説します。(次回に続く)
アクセンチュアから生まれた、企業改革のためのシステム開発を手掛けるエンジニア集団。安間裕が代表取締役社長を務める。諏訪勇紀はJavaに精通しSI上流での分析/設計を得意とするシニア・システム・アナリスト。
Copyright © ITmedia, Inc. All Rights Reserved.