ヘッダーをスキップ

ValueHolderインダイレクションの使用

インダイレクションを使用する永続クラスは、リレーションシップ属性を値ホルダー属性に置き換える必要があります。値ホルダーは、ValueHolderなどのValueHolderInterfaceインタフェースを実装するクラスのインスタンスです。このオブジェクトは、データベースから置き換えるオブジェクトの取得に必要な情報を格納します。アプリケーションが値ホルダーにアクセスしない場合、置き換えられたオブジェクトはデータベースから読み取られません。

メソッド・アクセスの使用時は、マッピングに指定されたgetメソッドおよびsetメソッドは、値ホルダーで参照されるオブジェクトではなくValueHolderInterfaceのインスタンスにアクセスします。

値ホルダーに置き換えるオブジェクトを取得するには、ValueHolderInterfaceクラスのgetValue()メソッドおよびsetValue()メソッドを使用します。これらのメソッドの便利な使用方法は、ValueHolderInterfacegetValue()メソッドおよびsetValue()メソッドを、次の例のようにgetメソッドおよびsetメソッド内に隠すことです。

例5-1 Value Holderインダイレクション

次の図はデータベースから読取り中のEmployeeオブジェクトを表しています。Addressオブジェクトは読み取られてなく、このオブジェクトはアクセスされないかぎり作成されません。

図5-5 読み取られないAddressオブジェクト

データベースから読み取られるオブジェクト

次の図のように、アドレスが最初にアクセスされたときValueHolderAddressオブジェクトを読み取って返します。

図5-6 最初のリクエスト

オブジェクトを読み取って返すValueHolder

次の図のように、アドレスに対する2回目以降のリクエストはデータベースにアクセスしません。

図5-7 2回目以降のリクエスト

ValueHolderにアクセスする2回目以降のリクエスト


関連トピック

インダイレクションの使用
インダイレクションの理解

インダイレクションの指定
インダイレクションを使用するためのJavaクラスの変更
透過的なインダイレクションの指定
Javaのプロキシ・インダイレクションの実装