Enterprise Objects Framework
EOF の概念の多くは、2005年4月にリリースされたMac OS X Tigerにおいてデスクトップアプリケーション向けに導入された。Core Dataは、Cocoa APIを使った開発者向けのオブジェクト-グラフ管理と永続性フレームワークである。つまり、Core Dataはアプリケーションのモデル層をメモリ上に定義されたデータオブジェクト群に編成する。Core Dataはそれらオブジェクトの変化を監視し、必要に応じてその変化を取り消すことができる(ユーザーがundoコマンドを実行したような場合)。そして、アプリケーションのデータの変更点をセーブする際、Core Dataがオブジェクトを永続性のある記憶装置に格納する作業を行う。
このように2つの技術はよく似ているが、目的は異なる。EOFは、クライアントをデータベースサーバに接続するためのJavaベースのフレームワークである。Core Dataは、デスクトップアプリケーション開発をサポートするよう設計されたObjective-Cベースのフレームワークである。Core DataとEOFには、それぞれもう一方にはない固有の機能がある。
EOFはオブジェクト関係マッピングのためのツールとフレームワークを提供する。この技術は、JDBC経由の関係データベースやJNDIディレクトリといった各種データソースからデータを検索する機構と、それらデータソースにデータを書き戻す機構を提供することに特化したものである。その機構は階層化・抽象化されており、開発者は特定のデータソースやそのベンダーを意識することなく、高い抽象レベルでデータの読み書きを考えることができる。
その中心となるのはモデルファイル ("EOModel") であり、視覚化ツールEOModelerかXcodeのEOModelerプラグインを使って構築する。そのマッピングは以下のように行われる。
データベースの表をクラスにマッピングする。
データベースの列(カラム)をクラスの属性にマッピングする。
データベースの行(ロウ)をオブジェクト(クラスのインスタンス)にマッピングする。
既存のデータソースに基づいてデータモデルを構築することもできるし、一から構築することもできる(その場合、データベースも一から構築される)。結果として、データベースのレコードがJavaのオブジェクトに変換される。
データモデルを使う利点は、固有な性質を持つデータソースとアプリケーションを分離できる点にある。アプリケーションのビジネスロジックをデータベースから分離することで、アプリケーションに変更を加えることなくデータベースを置き換えることが可能となる。
EOFは他のツールには見られないレベルでデータベース透過性を提供しており、同じモデルを使って異なるデータベースにアクセスでき、さらには複数の異なるデータベースを同時に扱うことも可能である。