このプロセスには、2 つの主なステップが含まれます。
以下のコード・サンプルは、これら 2 つのステップの説明に役立ちます。
EmployeeAccessBean aEmployee = new EmployeeAccessBean()
aEmployee.setInit_employeeNo ("100");
aEmployee.setName ("IBM");
aEmployee.setAddress ("1150 Eglinton Ave, Toronto");
クライアント・プログラムがコピー・ヘルパー属性をアクセス Bean に設定し、commitCopyHelper() を呼び出す前に取得操作を実行する場合、そのアクセス Bean は、エンタープライズ Bean 内のデータではなく、キャッシュ内のデータを返します。一般的に、ある属性がキャッシュ内にある場合、アクセス Bean はキャッシュからその属性を取得します。 しかし、設定または検索されていないコピー・ヘルパー・フィールドで取得操作を実行すると、キャッシュはエンタープライズ Bean から更新されます。
列挙を戻すファインダーを呼び出そうとしており、 それをトランザクション・スコープ外のクライアント・プログラムから呼び出す場合は、 最初の 5 つの結果のみが、列挙で戻されます。すべての結果を返すようにするには、finder メソッドがトランザクション内で呼び出されることを確認する必要があります。 これを行うには、コンテナー管理のトランザクション属性を持っているセッション Bean メソッドから finder メソッドを呼び出すか、 または、クライアントでユーザー・トランザクションの作成を行うことができます。例えば:
// Get the initial context
java.util.Properties p = new java.util.Properties();
p.put(Context.PROVIDER_URL, "IIOP:///");
p.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
InitialContext initContext = new InitialContext(p);
// Look up a transaction
userTran = (UserTransaction)initContext.lookup("jta/usertransaction");
userTran.begin();
// Call the finder
// Assume that employeeHome has already been found, and has a method defined findAll()
Enumeration enum = employeeHome.findAll();
while (enum.hasMoreElements()) {
// Process the enumeration
}
userTran.commit();