インダイレクションを使用するためのJavaクラスの変更

インダイレクションを使用する属性はValueHolderInterfaceに準拠する必要があります。Javaクラスを再インポートせずにクラス・エディタで属性タイプを変更できます。必ずJavaコードの属性タイプも変更します。正しく入力されていない属性は不適切としてマークされます。

属性タイプを変更する以外に、アクセッサ・メソッドも変更する場合があります。メソッド・アクセスを使用している場合、インダイレクションそのものへのアクセッサが必要となるため、getメソッドはValueHolderInterfaceに準拠するインスタンスを返し、setメソッドは同様に準拠する1つの引数を受け入れます。インスタンス変数がオブジェクトのかわりにVectorを返す場合は、値ホルダーをコンストラクタで次のように定義します。

addresses = new ValueHolder(new Vector());

どのような場合でも、アプリケーションはgetAddress()メソッドおよびsetAddress()メソッドを使用してAddressオブジェクトにアクセスします。インダイレクションがある場合、TopLinkはインスタンスのデータベースへの保存およびデータベースからの取得の際にgetAddressHolder()メソッドおよびsetAddressHolder()メソッドを使用します。

詳細は、『Oracle Application Server TopLinkアプリケーション開発者ガイド』を参照してください。

例5-2 インダイレクション

次のコードは、Addressへの1対1マッピングのメソッド・アクセスとともにインダイレクションを使用するEmployeeクラスを示しています。

クラス定義が変更されてEmployeeのaddress属性がAddressのかわりにValueHolderInterfaceになり、適切なgetメソッドおよびsetメソッドが提供されます。

// Initialize ValueHolders in Employee Constructor
public Employee() {
address = new ValueHolder();
}
protected ValueHolderInterface address;

// 'Get' and 'Set' accessor methods registered with the mapping and used by OracleAS TopLink.
public ValueHolderInterface getAddressHolder() {
return address;
}
public void setAddressHolder(ValueHolderInterface holder) {
address = holder;
}

// 'Get' and 'Set' accessor methods used by the application to access the attribute.
public Address getAddress() {
return (Address) address.getValue();
}
public void setAddress(Address theAddress) {
address.setValue(theAddress);
}


関連項目

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

値ホルダーインダイレクションの使用
インダイレクションの指定
透過的なインダイレクションの指定
Javaのプロキシ・インダイレクションの実装

 

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