ここでは,文書空間オブジェクトとProxyオブジェクトの関係について説明します。文書空間オブジェクトは,データベース上に存在するDMAオブジェクトと対応する,永続的なオブジェクトです。文書空間上の文書やフォルダを表します。文書空間オブジェクトについての詳細は,「2.2 文書空間オブジェクト」を参照してください。
Proxyオブジェクトは,文書空間オブジェクトの概念的な代理オブジェクトです。Proxyオブジェクトは,メモリ空間上に存在します。
Java クラスライブラリで作成したユーザアプリケーションプログラムで文書空間オブジェクトを操作する場合,文書空間オブジェクトを直接操作するのではなく,Proxyオブジェクトを通して間接的に操作します。このため,文書空間オブジェクトを操作するためには,文書空間オブジェクトそのもののインターフェースではなく,Proxyオブジェクトのインターフェースを取得して操作します。
Proxyオブジェクトと文書空間オブジェクトの対応は,n:1(nは1以上の整数)です。一つの文書空間オブジェクトに対して,複数のProxyオブジェクトからアクセスすることがあります。Proxyオブジェクトは,文書空間オブジェクトを操作するためのインターフェース(DbjObjインターフェース,DbjLinkObjインターフェースなど)を取得するごとにメモリ上に作成されます。Proxyオブジェクトが対象にする文書空間オブジェクトを,Proxyオブジェクトのターゲットオブジェクトといいます。
Proxyオブジェクトを通して文書空間オブジェクトを操作する場合の例を,次の図に示します。
図6-7 Proxyオブジェクトを通して文書空間オブジェクトを操作する例
また,Java クラスライブラリでは,複数の文書空間オブジェクトをまとめて操作することもできます。複数の文書空間オブジェクトを操作する場合は,複数のProxyオブジェクトのインターフェースを要素に持つ,複数文書空間オブジェクトアクセスオブジェクトのインターフェースを使用します。
複数の文書空間オブジェクトを操作する例を,次の図に示します。
図6-8 複数の文書空間オブジェクトを操作する例
複数文書空間オブジェクトアクセスオブジェクトのインターフェースは,ProxyオブジェクトのインターフェースであるDbjObjインターフェース,DbjVerObjインターフェースまたはDbjLinkObjインターフェースを要素とするリストのインターフェースです。
なお,Proxyオブジェクトには,文書空間オブジェクトのうち,リンクオブジェクトに対応するProxyオブジェクトと,それ以外の文書空間オブジェクトに対応するProxyオブジェクトがあります。リンクオブジェクトに対応するProxyオブジェクトを特に,リンクProxyオブジェクトといいます。以降,単にProxyオブジェクトと説明する場合は,リンクProxyオブジェクト以外のProxyオブジェクトのことを指します。