EOFとは何か

2007/03/30 (Fri) 22:07:46 JST

EOFとは何か、と問われたら「O-Rマッパー」とか「SQLを自動生成するツール」といった説明をしたくなりますが、私は「コンテキスト指向のデータベースフレームワーク」と解釈しています。

(※「コンテキスト指向」より「トランザクション指向」といったほうがわかりやすいかもしれません。多くのクラスに"...Context"とつくのでコンテキスト指向としましたが、曖昧かも。)

データは「いつデータベースから取得したか」「変更したかしないか」などの状況で意味がまったく変わってきます。 例えば、1つのデータを複数の人が同じタイミングで取得したとします。 そのデータは1つのデータベースからコピーされたまったく同じ内容のものですが、自分が取得したデータは自分にのみ意味があります。 他の人がそれぞれ手元でデータを編集しても、自分のデータには影響しません。 それでは、一人が異なる問い合わせを行った結果に重複するデータがあった場合はどうでしょうか。 コンピュータから見ればメモリ上に別々に存在する異なる文字列ですが、 検索した人からすればどれも同じデータです。 このように、データを扱う視点や人が変わればデータの意味が変わってきます。

EOFはこのような状況・意味(コンテキスト)を管理する抽象的なフレームワークです。 あらかじめその上にリレーショナルデータベースを対象としたクラス群が実装されているから、データベースを扱えるようになっているだけです。 これがファイルであればCVSのようなバージョン管理システムになるでしょうし、オブジェクトであればSmalltalk環境やSqueakのように動的なシステムになることでしょう。 この考えをWebに移したものがWebObjectsです。


Inverse Pages: WebObjects基礎研究室