EOContextLayers
2007/03/30 (Fri) 22:07:46 JST
コンテキストのレイヤー
コンテキストは以下の4つのレイヤーによって管理されています。ここでいうレイヤーはアクセスレイヤーやコントロールレイヤーとは異なり、実装面から見たもの??ではありません。
- 編集レイヤー (EOEditingContext)
- 整合レイヤー (EOObjectStoreCoordinator)
- 抽象的永続化レイヤー (EODatabaseContext)
- 具象的永続化レイヤー (?EOAadptorContext)
EOFのオブジェクトは最終的にリレーショナルデータベースに保存されますが、データベースに接続?するのは最後のレイヤーのみで、それ以外のレイヤーはすべて抽象的なレイヤーです。変更したオブジェクトは3つのレイヤーを通って検証や整合性チェックが行われ、最後に具象的永??続化レイヤー (アダプタ) によってデータベースに保存されます。データをフェッチするときはその逆の作業が行われます。
図:4つのレイヤー
なお、このコンテキストレイヤーは私が勝手に名付けたものです。抽象的・具象的永続化レイヤーは、EOFのドキュメントではそれぞれアクセスレイヤーのデータベー?スレベル・アダプタレベルとなっていますが、それだとRDBMSと混同しそうなのでこのような名前に?しました。
編集レイヤー
このレイヤーではオブジェクトの取得、編集を行います。オブジェクトはオブジェクトグラフ(EOObjectGraph)により管理され、オブジェクトの自由な編?集や破棄が可能です。
このレイヤーは編集コンテキスト (EOEditingContext) として実装されています。
整合レイヤー
編集レイヤーと抽象的永続化レイヤーの橋渡しを行います。両レイヤーを管理するオブジェクトはコーディネータと呼ばれ、基本的にアプリケーションに1つ??のオブジェクトが存在します。
編集レイヤーから送られるメッセージは、すべてコーディネータを介して下位レイヤーに渡ります??。コーディネータは複数の抽象的永続化オブジェクトと協調し、編集レイヤーと共にオブジェクトの??整合性を保つようコントロールします。
このレイヤーはEOObjectStoreCoordinatorとして実装されています。
抽象的永続化レイヤー
スナップショット (EOSnapshot) によってオブジェクトとデータ行の整合性を管理します。データベースからフェッチしたデータのスナップショットを生成したり、変更があったオブジェク??トをスナップショットと比較してからデータベースに保存します。このレイヤーではデータベースへの操作命令が組み立てられるのみで、接続は行いません。
このレイヤーはアクセスレイヤーのデータベースレベルとして実装されています。
具象的永続化レイヤー
最終的にデータベースを操作するのはこのレイヤーです。上位レイヤーで組み立てられた命令を各データベースに合わせて変換します。このレイヤーの役割はデータベースの操作で、上位レイヤーで管理されるオブジェクトの整合性には関知しません。
このレイヤーはアクセスレイヤーのアダプタレベルとして実装されています。
Inverse Pages: WebObjects基礎研究室