値ホルダーインダイレクションの使用

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

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

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

例5-1 値ホルダーインダイレクション

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

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

This figure shows a an object being read from the database. The object is not read and created unless it is accessed.

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

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

The first time the object is accessed, the ValueHolder reads and returns the object.

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

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

Each subsequent request for the object access the ValueHolder - not the database.


関連項目

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

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

 

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