ビュー・リンクのエンティティ・オブジェクトへの公開について

JDeveloperでは、ビュー・リンクにより定義された関係を使用して、複数のエンティティ・オブジェクトにアクセスして得られる結果を定義できます。JDeveloperでは、ビュー・リンクにより返されるデータへの容易なアクセスを提供するメソッドをエンティティ・オブジェクト内に作成することで、これを行います。この機能には、次の利点があります。

ビュー・リンクにより、あるオブジェクトから関連付けられているオブジェクトへ移動するビジネス・ロジックの記述が容易になります。ビュー・リンクにより関連付けられているビュー・オブジェクトでは、任意のSQL文を使用できます。これらの文により、複雑なフィルタリングや関連するデータセットの制限が可能になります。ビュー・リンクをエンティティ・アクセッサとして公開することにより、ビジネス・ロジック・プログラミング・モデルを、より限定された依存データの関連集合を検索する事前作成済の検索機能で強化できます。

アクセッサは、ビュー・リンクのリンク元ビュー・オブジェクトの選択された属性に対応するエンティティ・オブジェクトにのみ存在します。ビュー・リンク同様、アクセッサは一方向に定義されます。アクセッサでは、ディテール・ビュー・オブジェクトのデータを操作します。

返されるもの

エンティティ・オブジェクトのアクセッサは、インスタンス化した新規ビュー・オブジェクトへパラメータを渡します。ビュー・オブジェクトのデータは、エンティティ・オブジェクト行、指定したビュー・リンクおよびビュー・オブジェクトにより定義されたデータです。

たとえば、次の図に示すように、Deptエンティティ・オブジェクトおよびEmpエンティティ・オブジェクトと、それらに対応するビュー・オブジェクトを作成したとします。Deptエンティティ・オブジェクトには、部門番号(Deptno)10、20および30に対応する3つの行があります。Empエンティティ・オブジェクトでは、退職した従業員の従業員ID(Empno)がすべて-1に設定されています。また、ビュー・リンクDeptToEmpVLは、リンク元をDeptとし、EmpDeptno属性をリンク先とするよう定義されているとします。この場合、Deptエンティティ・オブジェクトは、部門10に該当する従業員のデータを含むビュー・オブジェクトをインスタンス化できます。また、部門20に該当する従業員のデータを含むビュー・オブジェクトもインスタンス化できます。

Figure that illustrates how values are passed, as described in the preceding paragraph.

DeptエンティティにgetTerminatedEmpsアクセッサを定義できます。これは、Empnoが0未満である従業員レコードを返します。このアクセッサは、まず指定された部門番号に該当する従業員データを含むビュー・オブジェクトを検索します。次に、現在のDept行について、Empno<0と一致するレコードに対するイテレータを返します。

ディテールの複数レベルの操作

前述のとおり、エンティティ・オブジェクトのアクセッサは、ビュー・リンクを通して、リンク先ビュー・オブジェクトにより返されるデータを使用します。アプリケーション・モジュールに、複数レベルのディテールがある場合、ビュー・オブジェクトの結果セットの取得後は、これによって返されるすべてのデータを使用できます。

Figure that illustrates entity objects traversing view links, as described in the preceding paragraph.


関連項目
ビュー・リンクのエンティティ・オブジェクトへの公開