ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkの理解
12c (12.1.2)
E48006-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

1 Oracle TopLinkの概要

この章では、Oracle TopLinkとその主要機能(TopLinkに含まれるコンポーネント、メタデータ、アプリケーション・アーキテクチャ、マッピングおよびAPI)について説明します。

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

1.1 TopLinkの理解

Oracle TopLinkは、Java Platform, Standard Edition (Java SE)やJava Platform, Enterprise Edition (Java EE)などのJava環境で使用するためのマッピングおよび永続性フレームワークです。TopLinkの中核となる機能は、オープン・ソースのマッピングおよび永続性フレームワークであるEclipseLinkによって提供されます。EclipseLinkプロジェクトは、オラクル社に主導され、Eclipse Foundationの管理下にあります。TopLinkには、このドキュメントの後の部分で説明するとおり、EclipseLinkを超える追加機能が含まれます。

EclipseLinkは、次の各仕様と、それらの仕様の拡張をすべて実装しています。

前述の標準仕様の実装に加え、EclipseLinkには次の機能が含まれます。

EclipseLinkは、広範囲のJava Enterprise Edition (Java EE)およびJavaアプリケーション・アーキテクチャとともに使用できます。EclipseLinkを使用して、リレーショナル・データベース、非リレーショナル(NoSQL)・データベース、XML、JSON、Webサービスを含む様々なデータ・ソースおよび形式をサポートする高度なオブジェクト永続性およびオブジェクト・トランスフォーメーション・レイヤーを設計、実装、デプロイおよび最適化できます。

EclipseLinkは、Java EE、Java SEおよびWebコンテナでJava永続性をサポートしますが、これには次のような様々なアプリケーション・サーバーとの統合が含まれます。

EclipseLinkによって、オブジェクトとデータ・ソースおよびオブジェクトとデータ表現のマッピングを、柔軟で効率的なメタデータ形式で迅速に取得および定義できます。

ランタイムでは、このマッピング・メタデータを自分のアプリケーションに活用できますが、この場合、データ・アクセス、問合せ、トランザクション(外部トランザクション・コントローラの使用の有無を問わない)、およびキャッシングを詳細にサポートできる、シンプルなセッション・ファサードを使用できます。

TopLinkの詳細は、「主要機能」を参照してください。

1.1.1 オブジェクトと永続データのインピーダンス・ミスマッチとは

Javaとデータ・ソースの統合は、エンタープライズJavaアプリケーションの作成時には非常に軽視されている問題です。この複雑な問題は、単なるデータ・ソースに対する読取りおよび書込みにとどまりません。データ・ソースの要素には表、行、列、主キー、外部キーがあります。JavaおよびJava EEプログラミング言語には、エンティティ・クラス(標準Javaクラス)、ビジネス・ルール、複雑なリレーションシップおよび継承があります。非リレーショナル・データ・ソースでは、JavaエンティティをXML要素とスキーマに一致させる必要があります。

解決を成功させるには、これらの異なるテクノロジ間の橋渡し、およびオブジェクトと永続データのインピーダンス・ミスマッチの解決が必要ですが、これは多くのリソースを要する難しい課題です。この課題を解決するには、Java EEとデータ・ソース要素の間に横たわる次の問題を解決する必要があります。

  • 根本的に異なるテクノロジ

  • 異なるスキル群

  • テクノロジごとに異なるスタッフおよび所有物

  • 異なるモデリングおよび設計の原理

アプリケーション開発者には、アプリケーション設計またはデータの整合性を損わずに、Javaアプリケーションとすべてのデータ・ソースを統合できる製品が必要です。また、Java開発者には、リレーショナル・データベースまたは非リレーショナル・データ・ソースをリポジトリとして使用して、ビジネス・ドメイン・オブジェクトを格納(永続化)および取得する機能が必要です。

1.1.2 EclipseLinkのソリューション

EclipseLinkは、Javaオブジェクトとデータ・ソースの不一致を解決します。これには、オブジェクト・テクノロジの最適な機能と特定のデータ・ソースを結合するアプリケーションを作成できる永続性フレームワークが含まれます。次の内容を実行できます。

  • Javaオブジェクトを事実上すべてのリレーショナル・データベースに永続化できます。

  • JavaオブジェクトとXMLおよびJSON文書間でインメモリー変換を実行できます。

  • 任意のオブジェクト・モデルを任意のリレーショナルまたは非リレーショナル・スキーマにマップできます。

  • EclipseLinkには、データ・ソースの見やすいオブジェクト指向ビューが用意されているため、SQLまたはJDBCに詳しくない場合でもEclipseLinkを正しく使用できます。

1.2 主要機能

広範な機能セットが用意されています。これらの機能を使用して、スケーラブルでメンテナンス性の高い、高パフォーマンスのエンタープライズ・アプリケーションを短期間で作成できます。

主な機能には、次のものがあります。

詳細およびダウンロードは、TopLinkのホーム・ページを参照してください。

http://www.oracle.com/technology/products/ias/toplink/index.html

1.3 新機能

次の項では、EclipseLinkの新機能の概要について説明します。

1.3.1 RESTfulサービス

EclipseLinkでは、標準ベース(JAX-RS/JAXB/JPA)のRESTfulサービスを通じてJPAエンティティを公開できます。RESTとは、Representational State Transferの頭字語であり、ステートレス型のクライアント/サーバー・アーキテクチャを包含する設計用語です。このアーキテクチャでは、Webサービスは、そのURIで識別可能なリソースとして表現されます。

サービスに対して、作成(POST)、読取り(GET)、更新(PUT)、削除(DELETE)などの基本的なHTTP操作をコールできます。

RESTfulサービスのデータは、URIを使用して参照します。URIは、次のようにターゲットに応じて異なる方法で構成できます。

  • 単一パートの主キーを持つJPAエンティティ用のURI

  • コンポジット・キーを持つJPAエンティティ用のURI

  • マップされた名前付き読取りの問合せを持つURI

  • 名前の更新および削除の問合せ用のURI

クライアントは、次のいずれかの方法でRESTfulサービスと対話できます。

  • Webブラウザをクライアントとして使用する方法

  • Java SEをクライアントとして使用する方法

  • 実装固有のAPIを使用する方法

詳細は、『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』のRESTfulサービスを通じたJPAエンティティの公開に関する項を参照してください。

1.3.2 テナント分離

EclipseLinkでは、複数のテナントをサポートするアプリケーション・コンポーネントを簡単に開発できます。開発者およびデプロイヤは、必要となるアプリケーションとデータの分離を完全に制御できます。各テナントは、その独自のデータにアクセスできますが、他のテナントのデータは認識できません。

EclipseLinkには、テナント分離に関する次のオプションがあります。

  • 単一表のテナント分離では、各テナントで表を共有できます。各テナントには、識別子列によって識別される独自の行があり、それらの行は他のテナントからは認識できません。

  • テナント別の表のテナント分離では、各テナントに、表のテナント識別子によって識別される1つ以上の独自の表があり、それらの表は他のユーザーからは認識できません。

  • 仮想プライベート・データベース(VPD)のテナント分離では、テナントは、同じ表を共有する複数のテナントをサポートする機能を提供するVPDデータベースを使用します。

詳細は、『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』のテナント分離の使用に関する項を参照してください。

1.3.3 NoSQL

NoSQLは、SQL標準をサポートしないデータベース・システムの類型です。NoSQLの類型は、アプリケーション・データベース、レガシー・データベース、メッセージ・システム、トランザクション処理モニターなどのEnterprise Information Systems (EIS)を含めるように拡張できます。EclipseLinkでは、Java Persistence API (JPA)を通じたNoSQLデータベースに対するJavaオブジェクトの永続化がサポートされます。EclipseLinkのネイティブAPIも、NoSQLデータベースでサポートされます。

NoSQLは、オブジェクトをXMLやJSONなどの構造化データにマップします。これは、埋込みデータ、埋込みコレクション、およびすべての既存のJPAマッピング注釈もサポートします。

問合せがNoSQLでサポートされるかどうかは、使用しているNoSQLプラットフォームに応じて異なります。JPAトランザクションAPIは、NoSQLデータ・ソースでサポートされます。一部のNoSQLデータ・ソースでは、トランザクションがサポートされないことがあるため、トランザクション・サポートのレベルはNoSQLプラットフォームに依存します。

詳細は、第12章「非リレーショナル・データ・ソースの理解」を参照してください。また、『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』のNoSQLデータベースでのTopLinkの使用に関する項も参照してください。

1.3.4 JSON

JavaScript Object Notation (JSON)は、判読可能なデータ交換用に設計された、テキストベースのオープン標準です。これは、単純なデータ構造および連想配列を表現するためのJavaScriptスクリプト言語から導出されます。これは、多数の言語で使用できるパーサーを持ち、言語に依存しません。

JAXBバインディング・メタデータを使用して、JSONを対象にJavaオブジェクトをマーシャリングします。この機能は、RESTfulサービスを作成する場合に便利です(JAX-RSサービスはXMLとJSON両方のメッセージを受け取ることができます)。

JSONサポートの詳細は、『Oracle Fusion Middleware Oracle TopLinkによるJAXBアプリケーションの開発』を参照してください。

1.3.5 データベース変更通知

共有(L2)オブジェクト・キャッシュによって、オブジェクトとそのリレーションシップに対するデータベース・アクセスが減少します。このキャッシュは、デフォルトで有効になっていますが、他のアプリケーションによって、またはクラスタ環境の他のサーバー上の同じアプリケーションによってデータベースの内容が直接変更されないかぎり、通常は問題ありません。その場合、キャッシュ内のデータが失効する可能性があります。

データベースの内容が変更された場合、EclipseLinkデータベース変更通知(DCN)によって、キャッシュの内容とデータベース間の同期が保証されます。DCNでは、JPA環境で共有キャッシュを使用できます。

『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』のJPA環境の共有データベースでのキャッシュの使用に関する項を参照してください。

1.3.6 拡張可能なエンティティ

拡張可能なエンティティによって、マッピングを動的に追加できます。この場合、エンティティには、静的属性ではなく、マップ内に拡張された属性が保存されます。次に、エンティティは、eclipselink-orm.xmlマッピング・ファイルを使用して、このマップの値をデータベースにマップする方法を定義します。拡張可能なエンティティは、複数のクライアント(テナント)が共有の汎用アプリケーションを使用できるマルチテナント(またはSaaS)・アーキテクチャで役立ちます。テナントは、自分のデータにプライベートにアクセスでき、他のテナントと共有するデータにもアクセスできます。

拡張可能なエンティティを使用すれば、次のことを行えます。

  • 一部のマッピングがすべてのユーザーに共通で、一部のマッピングはユーザー固有であるようなアプリケーションを作成できます。

  • 顧客に提供された後のアプリケーションにマッピングを追加できます(デプロイメント後でも可能)。

  • マッピング変更後も、同じEntityManagerFactoryインタフェースを使用してデータを操作できます。

  • アプリケーションで使用されるメタデータのソースを追加提供できます。

エンティティを拡張可能にする方法の詳細は、『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』のSoftware as a Serviceの提供に関する項を参照してください。

1.3.7 コンポジット永続性ユニット

コンポジット永続性ユニットを使用すると、(エンティティ・タイプの独自のセットがそれぞれに設定された)複数の永続性ユニットを単一の永続性コンテキストとして公開できます。このコンポジット永続性ユニットの一部である個々の永続性ユニットを、コンポジット・メンバー永続性ユニットと呼びます。詳細は、『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』のコンポジット永続性ユニットによる複数のデータベースの使用に関する項を参照してください。

1.3.8 外部メタデータ・ソース

マッピング情報は、実行中のアプリケーションの外部にあるメタデータ・ソースに格納できます。マッピング情報は、アプリケーションが永続性ユニットを作成するときに取得されるので、デプロイされたアプリケーションで動的にマッピングのオーバーライドまたは拡張を行えます。『Oracle Fusion Middleware Oracle TopLinkソリューション・ガイド』の外部メタデータ・ソースの使用に関する項を参照してください。

1.3.9 TopLink Grid

JPAアプリケーションは、Oracle Coherenceを使用してスケール・アウトできます。TopLink Gridは、Coherenceを分散共有(L2)キャッシュとして使用することから、JP QL問合せをCoherenceに送ってグリッド全体でパラレル実行してデータベース負荷を削減することまで、スケール・アウトに関する多数のオプションをアプリケーションに提供します。TopLink Gridでは、スケール・アウトするアプリケーションをリライトする必要はありません。JPAへの投資を使用したまま、Coherenceのスケーラビリティを利用できます。詳細は、Oracle Coherenceの統合のTopLink GridとOracle Coherenceの統合に関する項を参照してください。

1.4 主要概念

この項では、このドキュメントに記載されているいくつかの主要概念の概要について説明します。この項で説明する主要概念は、次のとおりです。

1.4.1 EclipseLinkメタデータ

EclipseLinkのメタデータは、アプリケーションの開発とデプロイされたランタイム環境の間の橋渡しをします。次のものを使用して、メタデータを取得できます。

  • JavaファイルのJPA注釈、およびpersistence.xmleclipselink-orm.xmlおよびorm.xmlファイルのJPA定義プロパティ

    メタデータは、persistence.xmlファイルのEclipseLink JPA注釈およびプロパティ拡張機能によっても取得されます。eclipselink-orm.xmlファイルは、JPA仕様には定義されていないプロパティ拡張機能を定義するためにも使用できます。

  • JavaファイルのJAXB注釈およびeclipselink-oxm.xmlファイルのJAXB定義のプロパティ

    eclipselink-oxm.xmlファイルは、JAXB仕様には定義されていないプロパティ拡張機能を定義するためにも使用できます。

  • JavaおよびEclipseLinkのAPI

メタデータを通じて、構成情報をランタイム環境に渡すことができます。ランタイム環境では、Javaオブジェクト、JPAエンティティ、およびEclipseLink APIを使用して記述されたコードなどの永続クラスとともにこの情報を使用して、アプリケーションが完成します。詳細は、「注釈を使用したメタデータの追加」を参照してください。『Oracle Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス』も参照してください。

マッピングは、アプリケーションの外部に保存できます。これは、追加マッピング情報が指定されたeclipselink-orm.xmlまたはeclipselink-oxm.xmlファイルを、ファイルとしてWebサーバーで使用できるようにすれば簡単に行えます。マッピング情報を保存して、動的に情報を更新できるようにするサーバー・プロセスが関係するような複雑なものにすることもできます。詳細は、EclipseLinkドキュメントの『EclipseLink/Examples/JPA/MetadataSource』を参照してください。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/MetadataSource

1.4.2 エンティティ

エンティティは、永続性ドメイン・オブジェクトです。一般的に、エンティティはリレーショナル・データベースの表を表現し、各エンティティ・インスタンスはその表の行に相当します。エンティティの主なプログラミング・アーティファクトはエンティティ・クラスですが、各エンティティはヘルパー・クラスを使用できます。

エンティティの永続状態は、永続フィールドまたは永続プロパティを通じて表現されます。これらのフィールドまたはプロパティでは、オブジェクト/リレーショナル・マッピングの注釈を使用して、エンティティおよびエンティティ関係を、基礎となるデータ・ストアのリレーショナル・データにマップします。

第4章「エンティティの理解」を参照してください。

1.4.3 ディスクリプタ

ディスクリプタは、Javaクラスをデータ・ソース表現に関連付ける方法を記述したものです。ディスクリプタは、オブジェクト・クラスをデータ・ソースに、データ・モデル・レベルで関連付けます。たとえば、永続クラス属性はデータベース列にマップされます。

EclipseLinkでは、ディスクリプタを使用して、あるデータ・ソースで特定クラスのインスタンスがどのように表現されるかを定義した情報を格納します。ディスクリプタは、EclipseLinkによって内部的に使用され、注釈、XMLまたはIDE (JDeveloperやEclipseなど)を通じて定義され、実行時に読み取られます。

第6章「ディスクリプタの理解」を参照してください。

1.4.4 マッピング

マッピングは、個々のオブジェクト属性をデータ・ソース表現と関連付ける方法を記述したものです。マッピングには、複雑なトランスフォーメーションまたは直接エントリを指定することができます。

EclipseLinkでは、マッピングを使用して、オブジェクトとデータ・ソース表現の間でデータをどのように変換するかを決定します。マッピングは、EclipseLinkによって内部的に使用され、注釈、XMLまたはIDE (JDeveloperなど)を通じて定義され、実行時にプロジェクトXMLファイルから読み取られます。

第7章「マッピングの理解」を参照してください。

1.4.5 データ・アクセス

データ・ソース・プラットフォームには、バインディング、ネイティブSQLの使用、バッチ書込みの使用、順序付けなどの特定のデータ・ソースに固有のオプションが含まれます。

EclipseLinkでは、OracleおよびOracle以外の多くのデータ・ソース・プラットフォームがサポートされます。

第8章「データ・アクセスの理解」を参照してください。

1.4.6 キャッシュ

EclipseLinkキャッシュは、クラスと主キーの値に基づいて最近読み取られたり書き込まれたオブジェクトが格納される、インメモリー・リポジトリです。キャッシュは、データベースとの不要な通信を回避し、ロックおよびキャッシュの分離レベルを制御し、オブジェクト・アイデンティティを管理することでパフォーマンスを向上するために使用します。

第9章「キャッシュの理解」を参照してください。

1.4.7 問合せ

リレーショナルや非リレーショナルのデータ・ソースに対して、Java EEおよびJava EE以外のアプリケーションの両方で問合せを使用して、永続オブジェクトまたはデータを作成、読取り、更新および削除できます。問合せは、オブジェクト・レベルまたはデータ・レベルで作成できます。

Java Persistence Query Language (JPQL)、SQL、式フレームワークなどの複数の問合せ言語がサポートされます。また、Java Persistence Criteria APIを使用すると、JPQLの文字列ベースのアプローチを使用せずに、オブジェクトベースの問合せ定義オブジェクトを構成して動的問合せを定義できます。

第10章「問合せの理解」を参照してください。

1.4.8 式フレームワーク

EclipseLinkの式フレームワークを使用すると、ドメイン・オブジェクト・モデルに基づいて問合せの検索基準を指定できます。式には、SQLより優れた点が多くあります。たとえば、式は管理が簡単で、ディスクリプタやデータベース表を変更してもアプリケーションの問合せ構造に影響せず、Queryインタフェースの標準化によって可読性が向上し、複雑な操作が簡略化されます。

第11章「EclipseLinkの式の理解」を参照してください。

1.4.9 NoSQLデータベース

NoSQLは、SQL標準をサポートしないデータベース・システムの類型です。これには、ドキュメント・データベース、キー/値ストア、および他の様々な非標準データベースが含まれます。Java Persistence API (JPA)を通じて、NoSQLデータベースに対するJavaオブジェクトの永続化がサポートされます。EclipseLinkのネイティブAPIも、NoSQLデータベースでサポートされます。

第12章「非リレーショナル・データ・ソースの理解」を参照してください。

1.4.10 パフォーマンスの監視およびプロファイリング

アプリケーションのパフォーマンスを測定し、最適化するための様々な機能が用意されています。ほとんどの機能はディスクリプタまたはセッションで有効/無効を切り替えることができるため、グローバルなパフォーマンスの向上が可能になります。パフォーマンスのプロファイリングとパフォーマンス、フェッチ・グループおよび問合せの監視のためのツールが提供されています。

第13章「パフォーマンスの監視およびプロファイリングの理解」を参照してください。

1.5 主要コンポーネント

図1-1に、TopLinkに含まれているコンポーネントを示します。次の項ではコンポーネントについて説明します。

図1-1 TopLinkのコンポーネント

図1-1の説明が続きます。
「図1-1 TopLinkのコンポーネント」の説明

1.5.1 EclipseLink CoreおよびAPI

EclipseLink Coreは、ランタイム・コンポーネントを提供します。ランタイムには、EclipseLink API経由で直接アクセスできます。ランタイム環境は、独立プロセスまたは外部プロセスではなく、アプリケーション内に埋め込まれています。EclipseLinkは、アプリケーション・コールによって起動され、永続データを操作できるようにします。この機能により、共有データベース接続およびキャッシュされたオブジェクトへのスレッド・セーフなトランザクション・アクセスが可能になります。

EclipseLink APIには、JPA 2.0 (JSR-317)のリファレンス実装が用意されています。org.eclipse.persistence.*クラスは、EclipseLinkのAPIをカプセル化して、仕様には定義されていない拡張機能を提供します。これらの拡張機能には、EclipseLink固有のプロパティと注釈が含まれています。API、プロパティおよび拡張機能の詳細は、『Oracle Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス』を参照してください。

JAXB APIは、Java SE 6に含まれます。eclipselink.jarファイルで、org.eclipse.persistence.jaxb.*クラスは、JAXBに対するEclipseLinkのサポートをカプセル化します。

TopLink Grid APIは、toplink-grid.jarファイルに含まれます。oracle.eclipselink.coherence.*クラスは、TopLink Gridに対するEclipseLinkのサポートをカプセル化します。

oracle.toplink.*クラスによって表現されていたTopLink Essentialsの古い永続性API (JPA 1の実装)は、TopLinkから削除され、EclipseLinkに置き換えられました。同様にoracle.toplink.*クラスによって表現されていた古いネイティブTopLink API (JPA以前のマッピングおよび永続性API)は、EclipseLinkのパッケージ名を使用してEclipseLinkに再実装されています。

1.5.2 オブジェクト・リレーショナル(JPA 2.0)・コンポーネント

JPAは、Java永続性を簡略化します。これには、Javaオブジェクトをリレーショナル・データベース表に標準的で移植性の高い方法でマップする方法を宣言で定義できるようにするオブジェクト・リレーショナル・マッピングのアプローチが用意されています。JPAは、Java EEアプリケーション・サーバーの内部およびJava Standard Edition (Java SE)アプリケーションのEJBコンテナの外部の両方で動作します。2.0 JPAの更新に含まれている主な機能は、次のとおりです。

  • オブジェクト/リレーショナル・マッピング機能の拡張

    • 埋込みオブジェクト・コレクションのサポート

    • 複数レベルの埋込みオブジェクト

    • 順序付けられたリスト

    • アクセス・タイプの組合せ

  • 基準問合せAPI

  • 問合せ「ヒント」の標準化

  • DDL生成をサポートするための追加メタデータの標準化

  • 検証のサポート

1.5.3 Object-XML (JAXB 2.2)コンポーネント

MOXyとも呼ばれるObject-XMLは、JavaクラスをXMLスキーマにバインドできるようにするEclipseLinkコンポーネントです。Object-XMLは、注釈を通じてマッピング情報を提供できるJAXBを実装しています。XML形式でマッピングを格納する方法のサポートは、MOXyによって提供されます。提供されている多数の高度なマッピングによって、Javaクラス・モデルでスキーマをミラーリングしなくても、複雑なXML構造を処理できます。

EclipseLink JAXBコンパイラで生成されるオブジェクトは、Java POJOモデルです。これらは、JAXB仕様で要求されている必要な注釈を使用して生成されます。JAXBランタイムAPIを使用すれば、オブジェクトをマーシャリングおよびアンマーシャリングできます。

Object-XMLをJAXBプロバイダとして使用する際には、既存のオブジェクト・モデルをXMLに変換するためのメタデータは不要です。モデルのXML表記を微調整する必要がある場合にのみ、(注釈またはXMLを使用して)メタデータを指定できます。

EclipseLink Object-XMLを使用して、次の方法でXMLを操作できます。

  • XMLスキーマからのJavaモデルの生成

  • EclipseLink MOXy JAXBランタイムの指定

  • JAXBを使用したXMLの操作

  • JavaモデルからのXMLスキーマの生成

Object-XMLおよびそれらの使用例の詳細は、『Oracle Fusion Middleware Oracle TopLinkによるJAXBアプリケーションの開発』を参照してください。

EclipseLinkでは、オブジェクト・モデルがXMLスキーマにマップされる方法を制御できるようにしながら、最大限の柔軟性を実現しています。自分のオブジェクト・モデルを制御できることには、多くの利点があります。

  • 適切なパターンおよびプラクティスを使用して、ドメイン・クラスを自分のアプリケーション専用に設計できます。

  • XPathベースのマッピングを使用できます。これにより、クラスとXMLスキーマ・タイプの間に1対1の関係が必要なくなります。詳細は、『Oracle Fusion Middleware Oracle TopLinkによるJAXBアプリケーションの開発』を参照してください。

  • アプリケーションに適切な方法でオブジェクトをインスタンス化できます。

  • 自分のクラスパスの依存性を制御できます。ほとんどのJAXB実装では、クラス・パスの依存性をアプリケーションに追加するために生成されるクラスに、ベンダー固有コードを配置します。

EclipseLinkの主な利点の1つは、マッピング情報を外部に保存できるので、JavaクラスやXMLスキーマを変更する必要がないことです。つまり、ドメイン・オブジェクトを複数のスキーマにマップできます(または、スキーマが変更された場合には、ドメイン・クラスを変更するかわりに、マッピング・メタデータを更新できます)。サード・パーティのクラスをマッピングする際には、ソースにアクセスして注釈を追加できないこともあるため、その場合にも便利です。

1.5.3.1 SDOコンポーネント

Service Data Objects (SDO)コンポーネントには、Service Data Objectsバージョン2.1.1のリファレンス実装が用意されています。リファレンス実装は、JSR-235に記載されています。SDOの実装には、リファレンス実装が組み込まれており、JavaオブジェクトからXMLへの変換、およびサービス・アーキテクチャに組み込めるデータ・オブジェクト・モデルの作成や使用に主に使用する追加機能が提供されています。

SDOでは、次の機能が提供されます。

  • SDO APIの使用

  • XMLスキーマの変換

  • SDOで使用するためのXSDのカスタマイズ

  • 動的データ・オブジェクトを使用したXMLの操作

  • 静的データ・オブジェクトの使用

    • SDOコンパイラの実行: タイプ・セーフなデータ・オブジェクトの生成

    • タイプ・セーフなデータ・オブジェクトを使用したXMLの操作

詳細は、EclipseLinkドキュメントの『Getting Started with EclipseLink SDO』を参照してください。

http://www.eclipse.org/eclipselink/moxy.php

1.5.4 データベースWebサービス・コンポーネント

データベースWebサービス(DBWS)では、Webサービスを使用して、リレーショナル・データベース・アーティファクトに簡単かつ効率的にアクセスできます。Javaコードを記述しなくても、データベースに対して、クライアントに中立なJava EE準拠のアクセスが可能になります。DBWSでは、既存のORMおよびOXMコンポーネントを使用しながら、EclipseLinkのコア機能を拡張します。

DBWSには、サービス・ディスクリプタ(および関連するデプロイメント・アーティファクト)を使用して、それをJAX-WS 2.0 Webサービスとして実現するランタイム・プロバイダ・コンポーネントがあります。ランタイム・プロバイダは、EclipseLinkを使用して、Webサービス・クライアントが使用するXML SOAPメッセージとデータベース間の橋渡しをします。DBWSアーキテクチャの詳細は、Oracle Fusion Middleware Oracle TopLink Database Webサービスによる永続性アーキテクチャの開発の開発者ガイドを参照してください。

1.5.5 TopLink Grid

Oracle Coherence (Coherence)を使用してJPAアプリケーションをスケール・アウトし、グリッドに書き込み、グリッドをデータ・ソースとして扱えます。TopLink Gridは、Coherenceを分散共有(L2)キャッシュとして使用することから、JPQL問合せをCoherenceに送ってグリッド全体でパラレル実行してデータベース負荷を削減することまで、スケール・アウトに関する多数のオプションをアプリケーションに提供します。TopLink Gridでは、スケール・アウトするアプリケーションをリライトする必要はありません。

TopLink Gridは、EclipseLink JPA実装とOracle Coherenceとを統合するもので、次の開発アプローチを提供します。

  • Coherence APIをTopLink Gridによって支援されたキャッシュとともに使用して、JPAに対して実装された特殊なキャッシュ・ローダーおよびキャッシュ・ストア・インタフェースでリレーショナル・データにアクセスできます。

  • JPAを使用してアプリケーションを構築し、データ・グリッドの機能を透過的に使用してスケーラビリティとパフォーマンスを向上させることができます。このような「グリッド基盤のJPA」アプローチにおいては、TopLink Gridが、キャッシュのセットと、EclipseLinkのJPA実装でのCoherenceの使用方法を制御できる問合せ構成オプションを提供します。


注意:

TopLink Gridの機能は、toplink-grid.jarファイルによって提供されています。このファイルを使用できるのは、Oracle Coherenceのライセンスを保持している場合のみです。


1.6 主要ツール

この項では、Oracle JDeveloper、Oracle Enterprise Pack for Eclipse、EclipseおよびNetBeans開発環境によって提供されるTopLinkのサポートについて説明します。どのツールもTopLinkと互換性がありますが、それぞれ特定の統合方法があります。

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

1.6.1 Oracle JDeveloper

Oracle JDeveloperは、E-BusinessアプリケーションとWebサービスの開発、デバッグおよびデプロイをエンドツーエンドでサポートするJava EE開発環境です。

JDeveloperの詳細およびダウンロードは、次を参照してください。

http://www.oracle.com/us/products/tools/019657.htm

JDeveloperには、EclipseLinkを使用するアプリケーションの開発を支援する多くの機能が含まれています。これらの機能には、データベース表からJPAエンティティをリバース・エンジニアリングし、EntityManagerが挿入されたEJB 3.0セッションBeanを生成するウィザードが含まれています。これには、JPAエンティティを問い合せるメソッドも含まれ、クライアントの生成をテストできます。

JDeveloperのツールを使用すると、JavaクラスおよびJPAエンティティを迅速かつ容易に構成し、コードを使用せずに、リレーショナル・データベースやXMLスキーマなどの様々なデータ・ソースにマップできます。

EclipseLinkインストールに含まれているDBWSBuilderスクリプトを使用すると、DBWSBuilderユーティリティを実行してWebサービスを生成できます。JDeveloperは、付属のAPIを使用しますが、DBWSBuilderスクリプトは直接使用しません。

Oracle JDeveloperのTopLinkサポートの詳細は、JDeveloperのオンライン・ヘルプを参照してください。

1.6.2 Oracle Enterprise Pack for Eclipse

Oracle Enterprise Pack for Eclipse (OEPE)は、Eclipseが優先IDEである場合に、Java EEの開発をサポートするように設計された一連のプラグインです。

OEPEの詳細およびダウンロードは、次を参照してください。

http://www.oracle.com/technetwork/developer-tools/eclipse/overview/index.html

OEPEは、EclipseLinkのJPA実装を使用する永続層を作成するために、次のタスクを完了できるように支援します。

  • JPAプロジェクトに対する永続性プロバイダの構成。

    OEPEには、Eclipse JPAプロジェクトで使用できるEclipseLinkプロジェクト・ファセットが用意されています。EclipseLinkプロジェクト・ファセットを選択すると、プロジェクトが次のように変更されます。

    • Oracle WebLogic Server 11gリリース1に同梱されているEclipseLink永続性プロバイダのJARファイルが含まれるようにプロジェクト・ビルド・パスが自動的に構成されます。Oracle WebLogic Serverの初期のバージョンにはライブラリ・ファイルが同梱されていませんが、ファセット構成ウィザードを使用してダウンロードできます。

    • Eclipse JPAプロジェクトのpersistence.xmlファイルに、EclipseLink固有のデータベース接続プロパティを自動的に構成できます。

  • JPAエンティティの生成。

    OEPEでは、OEPE JPAエンティティ生成ウィザードを使用してJPAエンティティを生成できます。

  • JavaクラスのXMLスキーマへのマップ。

    OEPEでは、JAXBプロバイダとしてMOXyを使用し、JavaクラスをXMLスキーマにマップできます。

  • Javaクラスの注釈指定。

    OEPEを使用すれば、データベース・スキーマに基づくJPA注釈を既存のJavaクラス(POJO)に指定できます。そうする際にEclipseでは、適切なアクセッサにJPA注釈が追加されます。

  • JPAエンティティ・ダイアグラム・エディタの使用。

    OEPEには、JPAプロジェクト内のエンティティ関係を表示するためのグラフィカル・ユーザー・インタフェースが用意されています。エンティティ・ダイアグラム・エディタを使用すれば、エンティティ間の関係の表示および変更、エンティティ・ソース・コードへの容易なアクセス、追加のオブジェクト・リレーショナル・マッピングの作成を行えます。このエディタでは、エンティティとエンティティのフィールドの両方のプロパティを編集できます。また、永続性コンテキストを記述するpersistence.xmlファイルも編集できます。

  • SQLスキーマ・ビューアの使用。

    OEPEでは、データベース・スキーマ間の表および関係を表示するSQLスキーマ・ビューアを使用して、データベース・スキーマを調べることができます。このビューアでは、表ノードとして表が表示されます。各ノードには、表のすべての列が一覧表示され、列のデータ型が表示されます。また、ノードには、アイコンの形で、主キーと外部キーのインジケータも表示されます。表の間の外部キーの関係は、矢印の形で、リンクによって表されます。

1.6.3 Eclipse

Eclipse IDEには、JPAを使用するアプリケーションの作成、実行および保守を支援する多くの機能とユーティリティが用意されています。OEPEをインストールすると、これらの機能が拡張されます。

Eclipse IDEの詳細およびダウンロードは、次を参照してください。

http://www.oracle.com/technetwork/developer-tools/eclipse/overview/index.html

Dali Java永続性ツール・プロジェクトには、JPAエンティティのオブジェクト・リレーショナル・マッピングの定義および編集用の拡張可能なフレームワークとツールが用意されています。JPAマッピングのサポートは、エンティティ生成ウィザード、デザインタイム検証、エンティティと永続性ユニット構成用の高機能UIを提供することにより、マッピングの複雑さを最小限に抑えることを目的としています。

Daliの詳細およびダウンロードは、次を参照してください。

http://www.eclipse.org/webtools/dali

オラクル社、オープン・ソースおよびサード・パーティ・ベンダー・コミュニティが提供するその他のツールおよびユーティリティは、Eclipse Marketplaceで入手できます。

http://marketplace.eclipse.org/

1.6.4 NetBeans

NetBeans IDEには、TopLinkを含むOracle GlassFish Serverがバンドルされています。このIDEでは、JPAベースのコード環境が完全にサポートされています。このサポートには、エンティティを作成するためのエンティティ・クラス・ウィザード、およびエンティティがJPA仕様に準拠していることを確認するためのエディタ・ヒントが含まれています。NetBeansには、persistence.xmlファイルを作成するための永続性ユニット・エディタも用意されています。

NetBeansの詳細およびダウンロードは、次を参照してください。

http://netbeans.org/index.html