ヘッダーをスキップ
Oracle Fusion Middleware Oracle TopLink開発者ガイド
11gリリース1(11.1.1)
B56246-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

120マッピングの作成

この章では、TopLinkマッピングの作成方法について説明します。

この章の内容は次のとおりです。

120.1 マッピング作成の概要

データベース・マッピングは、Oracle JDeveloper、TopLink WorkbenchまたはJavaコードを使用して作成できます。マッピングの作成および管理には、Oracle JDeveloperまたはTopLink Workbenchの使用をお薦めします。

Javaでマッピングを作成する方法の詳細は、『Oracle Fusion Middleware Java API Reference for Oracle TopLink』を参照してください。

TopLinkでサポートされているマッピングの種類に関する詳細は、17.1項「マッピングのタイプ」を参照してください。

開発時にはマッピングは個別に作成できます(120.2項「開発時におけるマッピングの手動作成」を参照)。あるいは、TopLinkですべての属性を自動的にマップすることもできます(120.3項「開発時におけるマッピングの自動作成」を参照)。

OC4Jを使用するCMPプロジェクトでは、開発時にマッピングが自動的に作成されるようにTopLinkを構成することもできます(120.4項「デプロイ時におけるマッピングの自動作成」を参照)。

JPAプロジェクトでは、JPA注釈を使用してマッピングを作成できます(『EclipseLink Developer's Guide』の「Using Metadata Annotations」(http://wiki.eclipse.org/Introduction_to_EclipseLink_JPA_%28ELUG%29#Using_Metadata_Annotations)を参照)。JPAでは、実行時にマッピングを自動的に作成できます。

マッピングを作成した後、各種のオプションを構成する必要があります(第121章「マッピングの構成」を参照)。

120.2 開発時におけるマッピングの手動作成

クラスの各永続フィールドからデータ・ソースへのマッピングは、Oracle JDeveloper、TopLink WorkbenchまたはJavaコードを使用して手動で作成できます。Oracle JDeveloperまたはTopLink Workbenchを使用することをお薦めします。

120.2.1 開発時におけるTopLink Workbenchを使用したマッピングの手動作成方法

TopLink Workbenchを使用してマッピングを手動で作成するには、次の手順を実行します。

  1. ナビゲータでディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブで、ディスクリプタをそのデータ・ソースと関連付けます。

    1. リレーショナル・プロジェクトの場合は、エディタで、「関連表」メニューからこのディスクリプタ用の表を選択します。

      TopLink Workbenchでは、このメニューをプロジェクトに関連付けられているデータベース・ログインからの表を使用して移入します。詳細は、20.4項「プロジェクト・レベルでのログイン情報の構成」を参照してください。

    2. XMLプロジェクトの場合は、エディタで、「スキーマ・コンテキスト」フィールドの横にある「参照」ボタンをクリックして、このディスクリプタに適したスキーマ・コンテキストを選択します。

      TopLink Workbenchで、プロジェクトに関連付けられているXMLスキーマからのスキーマ・コンテキストが表示されます。詳細は、5.6項「XMLスキーマの使用」を参照してください。

  3. ナビゲータでディスクリプタを開き、その属性を表示します。

  4. 属性を選択して次のいずれかを実行します。

    1. ツールバー上で適切なマッピングをクリックします(5.3.2.2項「コンテキスト・ツールバーの使用」を参照)。

    2. 属性を右クリックし、「マップ」を選択して、コンテキスト・メニューから特定のマッピング・タイプを選択します(5.3.1.2項「コンテキスト・メニューの使用」を参照)。

マッピングを完了するには、第121章「マッピングの構成」を参照して続行してください。

120.2.2 開発時におけるJavaを使用したマッピングの作成方法

次の例のように特定マッピング・タイプのコンストラクタを使用して、マッピングを作成します。

例120-1 リレーショナル1対1マッピングの作成

oracle.toplink.mappings.OneToOneMapping oom = new OneToOneMapping();

例120-2 リレーショナル・ダイレクト・コレクション・マッピングの作成

oracle.toplink.mappings.DirectCollectionMapping dcm =
                                     new DirectCollectionMapping();

例120-3 オブジェクト・リレーショナル・データ・タイプの構造マッピングの作成

oracle.toplink.objectrelational.StructureMapping sm = new StructureMapping();

例120-4 オブジェクト・リレーショナル・データ・タイプの配列マッピングの作成

oracle.toplink.objectrelational.ArrayMapping am = new ArrayMapping();

120.3 開発時におけるマッピングの自動作成

リレーショナル・データベース・プロジェクトでは、Oracle JDeveloperおよびTopLink Workbenchでクラスの属性を類似する名前付きデータベース・フィールドに自動的にマップできます。たとえば、これらのツールにより、province属性をデータベース・フィールドPROVに、属性streetをフィールドSTに、属性postalCodeをフィールドPOSTAL_CODEにマップできます。

自動マップ機能では、マップされていない属性に対してのみマッピングを作成できます。つまり、以前に定義されているマッピングは変更されません。

プロジェクト全体または特定のクラス、あるいはディスクリプタに対してクラスを自動的にマップできます。


注意:

自動マッパーがクラスに対して正しい表を推測できない場合、自動マップ機能を使用する前にディスクリプタをデータベース表と関連付けると、自動マッパーを補助できます(23.2項「関連表の構成」を参照)。

120.3.1 開発時におけるTopLink Workbenchを使用したマッピングの自動作成方法

プロジェクトのすべてのディスクリプタを自動的にマップするには、ナビゲータ・ウィンドウのプロジェクト・アイコンを右クリックし、コンテキスト・メニューから「自動マップ」を選択するか、メニューから「選択」「自動マップ」と選択します。

特定のディスクリプタまたは属性を自動的にマップするには、ディスクリプタまたは属性を選択して右クリックし、コンテキスト・メニューから「自動マップ」を選択するか、メニューから「選択」「自動マップ」と選択します。

120.4 デプロイ時におけるマッピングの自動作成

デプロイ時にOC4J EJB CMP EARからプロジェクトを作成する場合、TopLinkのデフォルト・マッピング機能を活用して、デプロイ時にマッピングを自動的に作成できます。

詳細は、次を参照してください。

120.5 Oracle LOBデータベース・オブジェクトに対するマッピングの作成

Oracleデータベースでは、大容量のバイナリ・データまたは文字データは、それぞれBLOB(バイナリ・ラージ・オブジェクト)またはCLOB(キャラクタ・ラージ・オブジェクト)として格納されます。LOB値のサイズや使用中のOracleデータベースのバージョンに応じて、値は次のように表の内部または外部に格納されます。

値がデータベースの外部に格納される場合、Oracle TopLinkなどのクライアント・アプリケーションは、LOBロケータを使用してLOB値を書き込む必要があります。Oracle JDBC OCIドライバおよびサーバー・ドライバは、これらのLOB(ラージ・オブジェクト)値をOracle JDBCシン・ドライバとは異なる方法で処理します。

120.5.1 Oracle JDBCシン・ドライバを使用したOracle LOBデータベース・オブジェクトに対するマッピングの作成方法

Oracle JDBCシン・ドライバを使用する場合、値を書き込む前にLOBロケータを取得するのは、TopLinkです。コミット操作時のロケータの取得には、タイプ変換マッピング(121.10項「タイプ変換コンバータの構成」を参照)を使用できます。

Oracle JDBCシン・ドライバを使用してLOB値をマップするには、次の手順を実行します。

  1. タイプ変換マッピングを使用してTopLinkディスクリプタの属性をLOB値にマップします。表120-1は、BLOB値を対象とするTopLink Workbenchでのタイプ変換マッピングを示します。例120-5は、同じマッピングに対応するJavaコードを示します。

    表120-1 TopLink WorkbenchでのBLOBマッピング

    図120-1の説明が続きます
    「表120-1 TopLink WorkbenchでのBLOBマッピング」の説明

    例120-5 JavaコードでのBLOBマッピング

    TypeConversionMapping pictureMapping = new TypeConversionMapping();
    pictureMapping.set.AttributeName("picture");
    pictureMapping.setFieldName("IMAGE.PICTURE");
    pictureMapping.setFieldClassification(java.sql.Blob.class);
    descriptor.addMapping(pictureMapping);
    
  2. セッションからDatabaseLoginを取得します。

    DatabaseLogin login = session.getLogin();
    
  3. 次のように、ロケータ・サポートを提供するプラットフォームを構成します。

    • Oracle8iデータベースでは、oracle.toplink.platform.database.oracle.Oracle8Platformクラスを使用します。

      login.usePlatform(new Oracle8Platform());
      
    • Oracle9iデータベースでは、oracle.toplink.platform.database.oracle.Oracle9Platformクラスを使用します。

      login.usePlatform(new Oracle9Platform());
      
    • Oracle Database 10gでは、oracle.toplink.platform.database.oracle.Oracle10Platformクラスを使用します。

      login.usePlatform(new Oracle10Platform());
      
    • Oracle Database 11gでは、oracle.toplink.platform.database.oracle.Oracle11Platformクラスを使用します。

      login.usePlatform(new Oracle10Platform());
      

    TopLink Workbenchのデータベース・エディタで、適切なプラットフォームを選択します。

    図120-2 TopLink Workbenchでのデータベース・プラットフォームの選択

    図120-2の説明が続きます
    「図120-2 TopLink Workbenchでのデータベース・プラットフォームの選択」の説明

120.6 マッピングの削除

Oracle JDeveloperやTopLink Workbenchを使用している場合、マップされている任意の属性をアンマップできます。

120.6.1 TopLink Workbenchを使用したマッピングの削除方法

属性をアンマップ(マッピングを削除)するには、次の手順を実行します。

「アンマップ」ボタン
ナビゲータ・ウィンドウで属性を選択し、「アンマップ」をクリックします。属性を右クリックし、コンテキスト・メニューから「マップ」「アンマップ」を選択しても、属性をアンマップできます。

ディスクリプタまたはJavaパッケージですべての属性をアンマップするには、次の手順を実行します。

すべてのディスクリプタのアンマップ・ボタン
ナビゲータ・ウィンドウでディスクリプタまたはJavaパッケージをクリックし、「アンマップ」「選択したディスクリプタのアンマップ」を選択するか、コンテキスト・メニューから「パッケージのすべてのディスクリプタのアンマップ」を選択します。

120.6.2 Javaを使用したマッピングの削除方法

ClassDescriptorメソッドremoveMappingForAttributeNameを使用して、属性をアンマップします。