4.2 適用性
このデザイン・パターンは、CORBAプロセス・オブジェクトからクライアント・アプリケーションに大量のデータを渡さなければならない状況で使用するのが適しています。クライアント・アプリケーションのローカル言語オブジェクトはデータのコンテナになり、そのコンストラクタはローカル・オブジェクトの状態を設定するために使用します。
このデザイン・パターンは、ローカル言語オブジェクト(この章ではDataObjectと呼ぶ)を作成するクライアント・アプリケーションで実装します。サーバー・アプリケーションでは、永続ストレージのエンティティとやり取りするCORBAプロセス・オブジェクトを実装します。このCORBAオブジェクトは、この章ではDataManagerオブジェクトと呼びます。
DataManager CORBAオブジェクトのOMG IDLでは、クライアント・アプリケーションとサーバー・アプリケーションの間でデータを転送する際に使用するデータ構造を定義します。このデザイン・パターンでは、「楽観的ロック」が採用されています。つまり、クライアント・アプリケーションでローカル・コピーが使用されている間はほかのサーバー・プロセスによってデータが変更されることはないと想定し、サーバー・アプリケーションで管理されるデータが更新用にロックされることはありません。
クライアント・アプリケーションでローカルのDataObjectがインスタンス化されると、そのオブジェクトのコンストラクタから(DataObjectにデータ構造を渡す) DataManager CORBAオブジェクトのオペレーションが呼び出されます。DataObjectでは、渡されたデータを利用してクラス変数を設定します。
クライアント・アプリケーションからサーバー・マシンに変更された状態を渡す必要がある場合、クライアント・アプリケーションではDataObject::writeData()メソッドを呼び出します。このメソッドでは、今度はDataManager CORBAオブジェクトのwriteRecord()オペレーションが呼び出されます。この呼出しでは、データ構造がwriteRecord()オペレーションにパラメータとして渡されます。 CORBAオブジェクトでは、永続ストレージを適切に更新します。
DataManager
次の図は、CORBA Client Data Cachingデザイン・パターンの仕組みを示しています。
図4-1 CORBA Client Data Cachingデザイン・パターンの仕組み

次に、この図の意味を説明します。
DataObjectコンストラクタでは、DataManagerCORBAオブジェクトのreadRecord()オペレーションが呼び出され、返されたデータ構造を使用してローカルの状態が初期化されます。- クライアント・アプリケーションでは、
DataObjectインスタンスのローカルの状態を変更する場合があります。 - 変更された状態を
DataManagerCORBAオブジェクトに渡すために、クライアント・アプリケーションではDataObject::writeData()オペレーションを呼び出し、変更されたデータを格納するデータ構造を渡します。
親トピック: Client Data Cachingデザイン・パターン