エンティティ間ビジネス・ロジックの実装

関係に適用されるビジネス・ルールは、アソシエーションを使用して実装されます。アソシエーション・アクセッサを使用すると、あるエンティティ・オブジェクト定義のインスタンスに、関連エンティティ・オブジェクト定義のインスタンスからアクセスできます。

最も単純な種類のアクセッサは、1対1アソシエーションの一方、または1対多アソシエーションの多数の側で発生します。このアクセッサは、他方の関連付けられたエンティティ・インスタンス全体を戻します。このインスタンスは通常、エンティティ・オブジェクト・クラス内のビジネス・ロジックを使用して操作できます。

多対多アソシエーションの一方、または1対多アソシエーションの1の側のアクセッサを取得する場合は、関連付けられたエンティティ・インスタンスが複数存在する可能性があるため、これより複雑な状況が発生します。この場合、現在の行に対するポインタ(RowIterator)を使用して、オブジェクトのコレクションが戻されます。

一意のエンティティとエンティティのコレクションのどちらが戻されるかに応じて、次の手順でアソシエーション・アクセッサを横断します。

アソシエーションを横断して一意エンティティを取得するには、次のようにします。

  1. ナビゲータで、適切なエンティティ・オブジェクトを選択します。
  2. 構造ペインで、エンティティ・オブジェクトのクラス・ファイル(xxxImpl.java)をダブルクリックしてJavaソース・エディタで開きます。
  3. ビジネス・ロジックを追加するメソッド(setterメソッド、create()validateEntity()など)に移動します。
  4. アソシエーション・アクセッサを使用して、アソシエーションの他方のエンティティを取得します。
    たとえば、特定の従業員からマネージャにアクセスする場合、アクセッサ・コードは次のようになります。
    //getManagerIdEmployees() is the accessor
    EmployeesImpl manager = getManagerIdEmployees();         

アソシエーションを横断してエンティティのコレクションを取得するには、次のようにします。

  1. ナビゲータで、適切なエンティティ・オブジェクトを選択します。
  2. 構造ペインで、エンティティ・オブジェクトのクラス・ファイル(xxxImpl.java)をダブルクリックしてJavaソース・エディタで開きます。
  3. ビジネス・ロジックを追加するメソッド(setterメソッド、create()validateEntity()など)に移動します。
  4. アソシエーション・アクセッサを使用して、アソシエーションの他方のエンティティのコレクションを取得します。
    たとえば、特定のマネージャから全従業員にアクセスする場合、アクセッサ・コードは次のようになります。
    //getEmployees() is the accessor
    RowIterator emps = getEmployees();        
  5. nextポインタを使用して、戻されたエンティティ間を反復します。
    前述の例を引き続き使用すると、コードは次のようになります。
    //current holds each entity
    EmployeesImpl current;
    //iterate through the entities
    while (emps.hasNext())
    {
      current = (EmployeesImpl) emps.next();
      //add business logic here
    }        

ビジネス・ロジックの実装
Oracle ADFアソシエーションについて
Oracle ADFエンティティ・オブジェクトについて