TOPシステム開発> 第1回:LINQとADO.NET Entity Framework (2/3)




次世代データアクセステクノロジー」

次世代データアクセステクノロジー

第1回:LINQとADO.NET Entity Framework

著者:マイクロソフト  小高 太郎

公開日:2008/1/8(火)

トランザクションスクリプト

トランザクションスクリプトは、ビジネスロジックを機能に従った一連のプロシージャ(手続き)で構築する。基本的にはこのプロシージャをプレゼンテーション層からの要求に対して実行し直接データベースを呼び出す、もしくはデータ層を介しての呼び出しを行う、非常にシンプルなパターンである。

トランザクションスクリプトのメリットは、このシンプルさにある。しかし、ビジネスロジックが複雑になると設計や保守を行うことが難しくなる。また設計によってはプレゼンテーション層、データ層との分離が難しくなってしまうといったデメリットも存在する。.NET Framework上では、ADO.NETの接続型モデルを使用した実装がこれにあたる。

テーブルモジュール

システム設計の出発点として、リレーショナルデータモデリングから行う場合、ビジネスロジックはテーブルの形を意識した実装をとることが多い。そういった場合、テーブルもしくはビューなどの形でステートを実装し、振舞い(動き)としてビジネスロジックをパッケージングしてしまうのがテーブルモジュールの考え方である。

テーブルのデータは、クラス内部のステートとして保持するため、オブジェクトの形で扱うことができ、同時にそのクラスにはテーブルに関連するビジネスロジックが複数含まれる。

このようにしておくと、オブジェクトモデルのカプセル化のメリットを享受でき、なおかつリレーショナルデータベースの論理的な構造をそのまま維持しているため、リレーショナルデータベースそのものを扱う場合と同様の方法でデータの操作を行うことが可能だ。またトランザクションスクリプトにありがちな、ビジネスロジックとデータアクセスの混在や、ビジネスロジックの重複を避けることもできる。また.NET Framework上では、ADO.NETの非接続型モデルを使用した実装がこれにあたる。

ドメインモデル

ドメインモデルはテーブルモジュールのクラスをさらに汎用的に、つまりテーブルと直接関係のない形で実装したものと捉えることができる。テーブルモジュールがリレーショナルデータモデリングを出発点とするのに対して、ドメインモデルの出発点は、オブジェクトモデリングである。継承やポリモーフィズムなどを利用したオブジェクト指向技術を利用して拡張性・保守性の高いシステムを作ることが可能だ。

ドメインモデルで問題になるのは、モデリングしたオブジェクトとリレーショナルデータベースの考え方の違い、いわゆる「インピーダンスミスマッチ」である。一般的にはこの解決に対して、O/Rマッピングが用いられることが多い。では、マイクロソフトのアプローチはどうかというと、このパターンと1対1に対応しているわけではないが、同じ方向性を目指すことのできるテクノロジーとして、先ほど述べたADO.NET Entity Frameworkを紹介しておきたい。

Entity Data Model
図2:Entity Data Model
(画像をクリックすると別ウィンドウに拡大図を表示します)

ADO.NET Entity Framework

ADO.NET Entity Frameworkは、論理データベース設計の上位概念を概念レベルと定め、その概念レベルにおいて、概念モデルの設計、クエリーを可能にする技術である。

この概念モデルに対して、ビジネスエンティティをモデリングすることによって、論理レベルのオブジェクトが作成され、同じく論理レベルに存在するデータストアのスキーマ(すなわち、リレーショナルデータベースのテーブルやビューなど)にマッピングされる。

ここで注意して欲しいのが、「要はO/Rマッパーではないのか?」という疑問である。

確かに内部的には、概念とストアスキーマのマッピングを行っているので、そのようにみえる。しかしADO.NET Entity Frameworkは、概念モデルの設計を行うことで下位階層までを一括して面倒見てしまうという考え方だ。この概念モデルをEntity Data Modelと呼ぶ。

Entity Data Modelは3つのXMLから構成される。ビジネスエンティティおよびリレーションシップが「概念スキーマ定義言語(CSDL:Conceptual Schema Definition Language)」、データベーススキーマをあらわす論理モデルが「ストアスキーマ定義言語(SSDL:Store Schema Definition Language)」、これらを結びつける要素が「マッピングスキーマ言語(MSL:Mapping Schema Language)」である(図2)。

Entity Data ModelのCSDLは、エンティティ同士の関係、継承、複雑型など多彩な表現をとることができるため、本来実装したい設計概念をそのまま構築することが可能だ。そしてADO.NET Entity Frameworkでは、このEntity Data Modelに対して直接クエリーを発行する機能を提供する。

概念モデルを使用するメリットとしては、「論理、物理設計に対する依存度を下げることができる」「インピーダンスミスマッチの解消」「多彩な表現手法」がある。 次のページ


前のページ  1  2  3  次のページ


マイクロソフト株式会社 小高 太郎
著者プロフィール
マイクロソフト株式会社  小高 太郎
ERP パッケージ開発に携わり、プログラマーからスタート。Microsoft Universityの講師を兼務、その後、SE、PM、管理職の道に進むも、縁あって2007年3月よりデベロッパー エバンジェリストに転身、現在は開発者向けに様々な技術訴求を行うべく活動中。


INDEX
第1回:LINQとADO.NET Entity Framework
  LINQとADO.NET Entity Framework
トランザクションスクリプト
  ドメイン層の各パターンを補完するLINQとは?