この章では、リレーショナル・ディスクリプタおよびオブジェクト・リレーショナル・データ・タイプ・ディスクリプタの作成方法について説明します。
この章の内容は次のとおりです。
複数のタイプのディスクリプタの作成方法の詳細は、第118章「ディスクリプタの作成」を参照してください。
ディスクリプタの作成後は、各種オプション(第119章「ディスクリプタの構成」を参照)の構成作業、および作成したディスクリプタを使用してのマッピングの定義作業が必要です。
TopLinkでサポートされているマッピングのタイプに関する詳細は、第17章「マッピングの概要」および第120章「マッピングの作成」を参照してください。
TopLinkでサポートされているディスクリプタのタイプに関する詳細は、16.1項「ディスクリプタ・タイプ」を参照してください。
詳細は、第24章「オブジェクト・リレーショナル・データ・タイプ・ディスクリプタの概要」を参照してください。
オブジェクト・リレーショナル・データ・タイプ・ディスクリプタの作成は、Oracle JDeveloperまたはTopLink Workbenchではできません。Javaコードを使用する必要があります。Javaコードでディスクリプタを作成する方法の詳細は、『Oracle Fusion Middleware Java API Reference for Oracle TopLink』を参照してください。
詳細は、24.1項「オブジェクト・リレーショナル・データ・タイプ・ディスクリプタ」を参照してください。
オブジェクト・リレーショナル・データ・タイプ・ディスクリプタを定義するには、ObjectRelationalDescriptorクラスを使用します。このクラスは、RelationalDescriptorを拡張して次のメソッドを追加したものです。
setStructureName: このメソッドをコールすることで、データ・ソース内でこのオブジェクト・クラスを表現するオブジェクト・リレーショナル・データ・タイプ構造の名前を設定できます。
addFieldOrdering: このメソッドを繰り返しコールすることで、オブジェクトの属性をデータ・ソースに永続化する順序を定義できます。オブジェクト・リレーショナル・データ・タイプ・データ・ソース・ドライバでJDBCの索引付き配列が使用されている場合には、このメソッドにより、TopLinkが使用するフィールド索引を定義します。
例25-1は、Oracleデータベースのオブジェクト・リレーショナル・データ・タイプ機能を使用してOracleデータベースにマップされるEmployeeオブジェクトを示します。
例25-2は、Employeeオブジェクトをデータベースでモデル化するために作成したオブジェクト・リレーショナル・データ・タイプ・データベース・タイプ(Employee_t)を示します。このようなオブジェクト・リレーショナル・データ・タイプ・データベース・タイプは、構造とも呼ばれます。
例25-2 Employeeオブジェクト・リレーショナル・データ・タイプ・データ・モデル
CREATE TYPE EMPLOYEE_T AS OBJECT(ID NUMBER(10),
F_NAME VARCHAR2(100),
L_NAME VARCHAR2(100),) NOT FINAL;
CREATE TABLE EMPLOYEES OF EMPLOYEE_T;
例25-3は、オブジェクト・リレーショナル・データ・タイプ・データベース・タイプEmployee_tを記述するためのオブジェクト・リレーショナル・データ・タイプ・ディスクリプタを、Javaでコーディングする方法を示します。
例25-3 Javaでのオブジェクト・リレーショナル・データ・タイプ・ディスクリプタの作成
import oracle.toplink.objectrelational.*;
...
ObjectRelationalDescriptor descriptor = new ObjectRelationalDescriptor();
descriptor.setJavaClass(Employee.class);
descriptor.setTableName("EMPLOYEES");
descriptor.setStructureName("EMPLOYEE_T");
descriptor.setPrimaryKeyFieldName("ID");
descriptor.addFieldOrdering("ID");
descriptor.addFieldOrdering("F_NAME");
descriptor.addFieldOrdering("L_NAME");
descriptor.addDirectMapping("id", "OBJECT_ID");
descriptor.addDirectMapping("firstName", "F_NAME");
descriptor.addDirectMapping("lastName", "L_NAME");
オブジェクト・リレーショナル・データ・タイプ・ディスクリプタの構成方法の詳細は、第26章「オブジェクト・リレーショナル・データ・タイプ・ディスクリプタの構成」を参照してください。
TopLinkでサポートされるオブジェクト・リレーショナル・データ・タイプ・マッピングの詳細は、第40章「オブジェクト・リレーショナル・データ・タイプ・マッピングの概要」を参照してください。