Value Holderインダイレクションの使用

インダイレクションを使用する永続クラスは、リレーションシップ属性を値ホルダー属性に置き換える必要があります。 値ホルダーは、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回目以降のリクエスト

オブジェクトに対する2回目以降のリクエストは、データベースではなくValueHolderにアクセスします。


関連項目

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

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

 

Copyright © 1997, 2004, Oracle. All rights reserved.