1 TopLinkの概要

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

TopLinkの理解

Oracle TopLinkは、Java Platform, Standard Edition (Java SE)やJava Platform, Enterprise Edition (Java EE)などのJava環境で使用するためのマッピングおよび永続性フレームワークです。TopLinkの中核となる機能は、オープン・ソースのマッピングおよび永続性フレームワークであるEclipseLinkによって提供されます。

EclipseLinkプロジェクトは、オラクル社に主導され、Eclipse Foundationの管理下にあります。TopLinkには、このドキュメントの後の部分で説明するとおり、EclipseLinkを超える追加機能が含まれます。

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

  • Java Persistence API (JPA)

    JPAは、オブジェクト/リレーショナル・マッピング(ORM)用のJava APIであり、Javaオブジェクトは、Javaアプリケーションでリレーショナル・データを管理する目的でデータベース・アーティファクトにマップされます。JPAには、Java Persistence Query Language (JPQL)、Java Persistence Criteria API、およびオブジェクト/リレーショナル・マッピング・メタデータを定義するためのJava APIおよびXMLスキーマが含まれます。

    最新バージョンの仕様は、JSR 338: Java Persistence 2.1です。http://jcp.org/en/jsr/detail?id=338を参照してください。

    標準のJPAに対するEclipseLinkの拡張は次のとおりです。

    • 非リレーショナル(NoSQL)・データベースに対するマッピングのサポート。

    • テナント分離、拡張可能なエンティティ、外部メタデータ・ソースなど、Software as a Service (SaaS)環境で役立つ機能。

    • Java API for RESTful Web Services (JAX-RS、JSR 311として定義)。

    • その他多くの追加の注釈、注釈の拡張、Java Persistence Query Language (JPQL)の拡張、JPA問合せカスタマイズの拡張、および永続性プロパティの拡張。

  • Java Architecture for XML Binding (JAXB)

    JAXBは、オブジェクト/XMLマッピング(OXM)のためのJava APIであり、XML文書は、そのXML文書のXSDスキーマに基づいてJavaオブジェクトにバインドされます。JAXBによって、XMLインスタンス文書をJavaコンテンツ・ツリーにアンマーシャリングし(読み取り)、次にJavaコンテンツ・ツリーをXMLインスタンス文書にマーシャリングする(書き込む)方法が提供されます。JAXBでは、JavaオブジェクトからXMLスキーマを生成する方法も提供されます。

    最新バージョンの仕様は、JSR 222: Java Architecture for XML Binding (JAXB) 2.0です。http://jcp.org/en/jsr/detail?id=222を参照してください。

    注意:

    EclipseLink JAXB実装は、EclipseLink MOXyコンポーネントの一部で、EclipseLink JAXBを拡張してJavaScript Object Notation (JSON)文書をサポートします。EclipseLinkは、JSONの読取り時と書込み時のすべてのオブジェクト/XMLオプションに対応しています。MOXyでは、以前のネイティブのEclipseLinkオブジェクト/XML APIもサポートしています。

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

  • EclipseLink Database Web Services (DBWS)

    DBWSは、Webサービスを介してリレーショナル・データベース・アーティファクトにJava EE準拠のクライアント非依存アクセスを行うための開発ツールおよびランタイムです。開発ツールのDBWSビルダーは、必要なデプロイメント・アーティファクトを生成するコマンド行ユーティリティです。(DBWSビルダーは、Eclipse Dali Java PersistenceツールセットおよびOracle JDeveloperに統合されています。)ランタイム・プロバイダは、サービス・ディスクリプタ(および関連するデプロイメント・アーティファクト)を使用して、それをJAX-WS 2.0 Webサービスとして実現します。ランタイムは、EclipseLinkを使用して、Webサービス・クライアントが使用するXML SOAPメッセージとデータベース間の橋渡しをします。

  • EclipseLink Enterprise Information Services (EIS)

    EISは、Java Connector Architecture (JCA)リソース・アダプタを通じてデータ・ストアの使用を有効化するための機能です。XMLメタデータの使用によって、相互作用および交換データが構成され、ドメイン・モデルにマップされます。相互作用のデータは、Common Client interface (CCI)またはXMLスキーマを使用してマップできます。この使用方法は、JDBCまたはSQLアクセスが提供されない非リレーショナル・データ・ストアを対象としています。

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

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

  • Oracle WebLogic Server

  • Oracle Glassfish Server

  • JBoss Web Server

  • IBM WebSphereアプリケーション・サーバー

  • SAP NetWeaver

  • Oracle Containers for Java EE (OC4J)

  • 他の様々なWebコンテナ(Apache Tomcat、Eclipse Gemini、IBM WebSphere CE、SpringSource Serverなど)

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

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

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

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

非リレーショナル・データ・ソースでは、JavaエンティティをXML要素とスキーマに一致させる必要があります。

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

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

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

  • 異なるスキル群

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

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

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

EclipseLinkのソリューション

EclipseLinkは、Javaオブジェクトとデータ・ソースの不一致を解決します。

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

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

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

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

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

主要機能

EclipseLinkの主な機能。

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

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

  • 非侵入的で柔軟なメタデータベース・アーキテクチャ

  • 高度なマッピング・サポートと柔軟性: リレーショナル、オブジェクト・リレーショナル・データ型、およびXML

  • 幅広いパフォーマンス・チューニング・オプションによる、スケーラビリティに優れたパフォーマンスおよび同時実行性を実現する最適化

  • Oracle Fusion Middleware Serverなどの一部のアプリケーション・サーバーのクラスタの統合を含む、包括的なオブジェクト・キャッシングのサポート

  • 広範な問合せ機能: Java Persistence Query Language (JPQL)、ネイティブSQL、EclipseLink式フレームワークなど

  • ジャストインタイム方式の読取り

  • オブジェクトレベルのトランザクション・サポートと広く使用されているサーバーおよびデータベースとの統合

  • オプティミスティック/ペシミスティック・ロック・オプションおよびロック・ポリシー

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

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

主要概念

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

この項で説明する主要概念は、次のとおりです。

EclipseLinkのメタデータ

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

  • JavaファイルのJPA注釈、およびpersistence.xmlおよびeclipselink-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を使用して記述されたコードなどの永続クラスとともにこの情報を使用して、アプリケーションが完成します。詳細は、「注釈を使用したメタデータの追加」を参照してください。『Java Persistence API (JPA) Extensions Reference for EclipseLink』も参照してください。

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

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

エンティティ

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

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

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

ディスクリプタ

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

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

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

マッピング

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

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

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

データ・アクセス

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

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

キャッシュ

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

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

問合せ

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

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

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

式フレームワーク

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

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

NoSQLデータベース

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

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

パフォーマンスのモニタリングおよびプロファイリング

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

『Solutions Guide for EclipseLink』の「Enhancing Performance」を参照してください。

主要コンポーネント

EclipseLinkに含まれるコンポーネントには、JPA、JAXBおよびMOXyコンポーネントがあります。

次の図に、EclipseLinkに含まれている主要コンポーネントを示します。

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

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

EclipseLink CoreおよびAPI

EclipseLink Coreは、ランタイム・コンポーネントを提供します。ランタイムには、EclipseLink API経由で直接アクセスできます。

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

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

JAXB APIは、Java SE 6、Java SE 7、Java SE 8、Java SE 9およびJava SE 10に含まれています。これらのAPIはJava SE 11から削除されました。eclipselink.jarファイルで、org.eclipse.persistence.jaxb.*クラスは、JAXBに対するEclipseLinkのサポートをカプセル化します。

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

JPAには、Javaオブジェクトをリレーショナル・データベース表に標準的で移植性の高い方法でマップする方法を宣言で定義できるようにするオブジェクト・リレーショナル・マッピングのアプローチが用意されています。

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

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

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

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

    • 順序付けられたリスト

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

  • 基準問合せAPI

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

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

  • 検証のサポート

JAXBコンポーネント

JAXBは、XML文書をJava形式でJavaプログラムに提示することにより、JavaプログラムがXML文書にアクセスできようにするJava APIです。

JAXBは、XML文書をJava形式でJavaプログラムに提示することにより、JavaプログラムがXML文書にアクセスできようにするJava APIです。このプロセスはバインディングと呼ばれ、コンピュータ・メモリー内のオブジェクトとして、XML文書内に情報が表現されます。これにより、Domain Object Model (DOM)またはStreaming API for XML (SAX)を使用してXML自身の直接表現からデータを取得しなくても、オブジェクトからXML内のデータにアクセスできるようになります。通常、XMLバインディングをJPAエンティティとともに使用し、JAX-WSまたはJAX-RSの実装を利用して、データ・アクセス・サービスを作成します。これら両方のWebサービス標準では、JAXBがデフォルトのバインディング・レイヤーとして使用されています。このサービスにより、クライアント・コンピュータでJavaが使用されている場合とそうでない場合がある複数のコンピュータ間で、JPAによって公開されたデータにアクセスできるようになります。

JAXBでは、注釈の拡張セットを使用して、JavaからXMLへのマッピングのバインディング・ルールを定義します。これらの注釈は、EclipseLink APIのjavax.xml.bind.*パッケージのサブクラスです。これらの注釈の詳細は、『Java API Reference for EclipseLink』を参照してください。

JAXBの詳細は、次の『Java Architecture for XML Binding (JAXB)』を参照してください。

https://www.eclipse.org/eclipselink/#moxy

MOXyコンポーネント

MOXyはEclipseLink JAXBの実装です。

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

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

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

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

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

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

  • JAXBを使用したXMLの操作

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

MOXyおよびそれらの使用例の詳細は、『Developing JAXB Applications EclipseLink MOXy』を参照してください。

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

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

  • XPathベースのマッピングを使用できます。これにより、クラスとXMLスキーマ・タイプの間に1対1の関係が必要なくなります。詳細は、『Developing JAXB Applications EclipseLink MOXy』を参照してください。

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

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

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

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のドキュメント(https://www.eclipse.org/eclipselink/#moxy)でEclipseLink SDOを参照してください。

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

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

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

主要ツール

Oracle JDeveloper、EclipseおよびNetBeans開発環境では、EclipseLinkに対する特定のサポートが提供されます。

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

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

Oracle JDeveloper

JDeveloperには、EclipseLinkを使用するアプリケーションの開発を支援する多くの機能が含まれています。

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

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

https://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html

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

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

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

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

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

Eclipse

Eclipse IDEには、JPAを使用するアプリケーションの作成、実行および保守を支援する多くの機能とユーティリティが用意されています。OEPEをインストールすると、これらの機能が拡張されます。Eclipse IDEの情報およびダウンロードについては、https://www.eclipse.org/downloads/packages/を参照してください。

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

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

NetBeans

NetBeans IDEには、EclipseLinkを含むGlassFish Server Open Source Editionがバンドルされています。

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

NetBeansの詳細とダウンロードは、http://netbeans.org/index.htmlを参照してください。