Oracle TopLinkは、オブジェクトの永続性およびオブジェクト・トランスフォーメーションのための高度なフレームワークを提供します。開発やメンテナンスのコストを軽減し、エンタープライズ・アプリケーションの機能を向上させる開発ツールおよびランタイム機能が用意されています。
この章の内容は次のとおりです。
Oracle TopLinkは、リレーショナル・データベースに永続オブジェクト指向データを格納する、パフォーマンスの高いアプリケーションを作成します。オブジェクト指向データが、リレーショナル・データまたはeXtensible Markup Language(XML)要素に変換されます。
TopLinkでは、効率的で柔軟性の高い、実証されたソリューションを利用することで、本来の業務上の課題に専念しながら、オブジェクトと永続データの間のトランスフォーメーションの機能をアプリケーションに組み込むことができます(1.2項「オブジェクトと永続データのインピーダンス・ミスマッチとは」を参照)。
TopLinkは、広範囲なJava 2 Enterprise Edition(Java EE)およびJavaアプリケーション・アーキテクチャでの使用に適しています(1.4項「TopLinkアプリケーションのアーキテクチャ」を参照)。TopLinkでは、各種データ・ソースと書式をサポートする、オブジェクトの永続化およびオブジェクト・トランスフォーメーションを行うための拡張レイヤーを設計、実装、デプロイおよび最適化できます。次のレイヤーがあります。
リレーショナル: Java Database Connectivity(JDBC)ドライバを使用してアクセスするリレーショナル・データベースへの、Javaオブジェクトのトランザクション永続性を可能にします。
オブジェクト・リレーショナル・データ・タイプ: Oracle Databaseなど、オブジェクト・リレーショナル・データ・タイプ・データベースに格納するために最適化された特別な構造を持つデータ・ソース表現への、Javaオブジェクトのトランザクション永続性を可能にします。
企業情報システム(EIS): Java EE Connector Architecture(JCA)アダプタを使用してアクセスされる非リレーショナル・データ・ソースへのJavaオブジェクト、およびサポートされているEISレコード・タイプ(索引付き、マップ済、XMLなど)の、トランザクション永続性を可能にします。
XML: XMLバインディング(JAXB)のJavaアーキテクチャを使用して、JavaオブジェクトとXMLスキーマ・ドキュメント(XSD)ベースのXML文書の間で、非トランザクションの非永続(インメモリー)変換を行うために使用します。
TopLinkは、Java EEおよびJava SE環境でEJB 3.0をサポートし、このサポートにはOracle WebLogic Server、OC4J、SunAS、JBoss、IBM WebSphereアプリケーション・サーバーなどの多様なアプリケーション・サーバーとの統合も含まれます。また、OC4JではEJB 2.nのコンテナ管理の永続性(CMP)もサポートしています。
Oracle JDeveloper TopLinkエディタ、Eclipse Dali、Oracle TopLink Workbenchを含め、TopLinkが提供する広範な開発ツールにより、柔軟で効果的なメタデータ形式でのオブジェクトからデータ・ソースへのマッピング、およびオブジェクトからデータ表現へのマッピングをすみやかに取得および定義できます(2.9項「TopLinkメタデータの使用」を参照)。
TopLinkのランタイムでは、このマッピング・メタデータを自分のアプリケーションに活用できます。これには、データ・アクセス、問合せ、(外部トランザクション・コントローラを使用する、および使用しない)トランザクション、キャッシングなどを詳細にサポートできる、シンプルなセッション・ファサードを使用できます。
TopLinkの詳細は、1.3項「TopLinkの主な機能」を参照してください。
Javaとデータ・ソースの統合は、エンタープライズJavaアプリケーションの作成時には非常に軽視されている問題です。この複雑な問題は、単なるデータ・ソースに対する読取りおよび書込みにとどまりません。データ・ソースの要素には表、行、列、主キー、外部キーがあります。JavaおよびJava EEにはエンティティ・クラス(標準JavaクラスまたはEJBエンティティBean)、ビジネス・ルール、複合リレーションおよび継承があります。非リレーショナル・データ・ソースでは、JavaエンティティをEISレコードまたはXML要素とスキーマに一致させる必要があります。これらの不一致(図1-2に示されています)は、オブジェクトと永続データのインピーダンス・ミスマッチとして知られています。
解決を成功させるには、これらの異なるテクノロジ間の橋渡し、およびオブジェクトと永続データのインピーダンス・ミスマッチの解決が必要ですが、これは多くのリソースを要する難しい課題です。この課題を解決するには、Java EEとデータ・ソース要素の間に横たわる次の問題を解決する必要があります。
根本的に異なるテクノロジ
異なるスキル群
テクノロジごとに異なるスタッフおよび所有物
異なるモデリングおよび設計の原理
アプリケーション開発者には、理想的なアプリケーション設計またはデータの整合性を損わずに、Javaアプリケーションとすべてのデータ・ソースを統合できる製品が必要です。また、Java開発者には、リレーショナル・データベースまたは非リレーショナル・データ・ソースをリポジトリとして使用して、ビジネス・ドメイン・オブジェクトを格納(永続化)および取得する機能が必要です。
TopLinkのソリューション
TopLinkは、Javaオブジェクトとデータ・ソースの不一致を解決します。TopLinkは、リレーショナル、オブジェクト・リレーショナル・データ・タイプ、EIS、およびXMLマッピングをシームレスに管理する永続化フレームワークです。これにより、開発者はオブジェクト・テクノロジと各データ・ソースの最もよい面を兼ね備えたアプリケーションを短期間で作成できます。TopLinkでは、次のことが可能です。
JDBC準拠のドライバでサポートされる事実上すべてのリレーショナル・データベースでJavaオブジェクトを永続化すること。
企業情報システム(EIS)レコード(索引付き、マップ済またはXML)を使用して、Java EE Connector Architecture(JCA)アダプタでサポートされる事実上すべての非リレーショナル・データ・ソースでJavaオブジェクトを永続化すること。
JAXBを使用して、JavaオブジェクトとXMLスキーマ(XSD)ベースのXML文書の間のインメモリー変換を実行すること。
Oracle TopLink Workbenchのグラフィカル・マッピング・ツールまたはOracle JDeveloper TopLinkのエディタを使用して、任意のオブジェクト・モデルを任意のリレーショナルまたは非リレーショナル・スキーマにマップすること。
SQLまたはJDBCに詳しくない場合でもTopLinkを正しく使用すること。データ・ソースの見やすいオブジェクト指向ビューがTopLinkによって提供されるためです。
TopLinkでは、広範囲にわたる詳細な機能群が用意されています。これらの機能を使用して、スケーラブルでメンテナンスが可能な、高パフォーマンスのエンタープライズ・アプリケーションを短期間で作成できます。
TopLinkの主な機能には、次のものがあります。
非介入型で柔軟な、メタデータ使用のアーキテクチャ(2.9項「TopLinkメタデータの使用」を参照)
アーキテクチャの柔軟性: Plain Old Java Object(POJO)、コンテナ管理の永続性(CMP)と、EclipseLinkによって提供されるJava Persistence API(JPA)、Java API for XML Binding(JAXB)、サービス・データ・オブジェクト(SDO)およびWebサービス
詳細なマッピング・サポートおよび柔軟性: リレーショナル、オブジェクト・リレーショナル・データ・タイプ、企業情報システム(EIS)およびXML
幅広いパフォーマンス・チューニング・オプションによる、スケーラビリティに優れたパフォーマンスおよび同時実行性を実現する最適化
Oracle Application Serverなどの一部のアプリケーション・サーバーのクラスタの統合を含む、包括的なオブジェクト・キャッシュのサポート
広範な問合せ機能: TopLinkの式フレームワーク、Java Persistence Query Language(JP QL)、Enterprise JavaBeans Query Language(EJB QL)、ネイティブSQLなど
ジャストインタイム方式の読取り
オブジェクト・レベルのトランザクションのサポートや、一般的なアプリケーション・サーバーおよびデータベースとの統合
オプティミスティック/ペシミスティック・ロック・オプションおよびロック・ポリシー
包括的なビジュアル設計ツール: Oracle JDeveloper TopLinkエディタ、Eclipse DaliおよびOracle TopLink Workbench
詳細は、次のURLでOTNのTopLinkページを参照してください。
http://www.oracle.com/technology/products/ias/toplink/index.html
3層および2層アーキテクチャを含む様々なアプリケーション・アーキテクチャで(Java EEの有無を問わず)TopLinkを使用することで、リレーショナル・データ・ソースと非リレーショナル・データ・ソースの両方の各種データ・タイプにアクセスできます。
TopLinkをアプリケーション・アーキテクチャに組み込む計画の詳細は、2.2項「TopLinkを使用するアプリケーションの設計」を参照してください。
この項では、TopLinkアプリケーションで使用される次のような一般的なエンタープライズ・アーキテクチャについて説明します。
3層(またはJava EE Web)アプリケーションは、最も一般的なTopLinkのアーキテクチャの1つです。このアーキテクチャの特徴は、サーバーによりホスティングされる環境です。この環境では、ビジネス・ロジック、永続エンティティおよびOracle TopLink Foundation Libraryがすべて1つのJVMに存在します。詳細は、2.11項「3層アーキテクチャについて」を参照してください。
このアーキテクチャの最も一般的な例は、クライアント・ブラウザがサーブレット、JSP、およびHTMLを介してアプリケーションにアクセスする単純な3層アプリケーションです。プレゼンテーション層は、同じJVM内にある他のJavaクラスを介してTopLinkと通信し、必要な永続ロジックを提供します。このアーキテクチャでは、クラスタ化環境で複数のサーバーをサポートしますが、プレゼンテーション層と、TopLinkを使用して永続エンティティに対して永続ロジックを起動するコードとの間で、JVMに区別はありません。
3層アプリケーションの一般的なバリエーションには、EJBセッションBeanでのビジネス・ロジック(TopLinkのアクセスなど)のラップがあります。このアーキテクチャはスケーラブルなデプロイを可能にし、ホスト・アプリケーション・サーバーからのトランザクション・サービスと統合されています。詳細は、2.13項「EJBセッションBeanファサード・アーキテクチャについて」を参照してください。
プレゼンテーション層からの通信は、EJBセッションBeanへのコールを介して行われます。このアーキテクチャは、デプロイのためにアプリケーションを異なる層に分離します。セッションBeanアーキテクチャは、JavaオブジェクトまたはEJBエンティティBeanのいずれかを永続化できます。
JPAによるEJB 3.0エンティティ
EJB 3.0仕様には、Java Persistence API(JPA)という追加の永続性仕様が含まれます。このAPIを使用して、EJB 3.0 Java EE準拠のコンテナ内および標準のJava SE 5以上の環境内の両方で、Plain Old Java Object(POJO)の作成、読取り、更新および削除を行うことが可能です。
EclipseLink JPAは、標準準拠のJPA永続性プロバイダであり、EclipseLink Foundation Libraryに基づいています。EclipseLink JPAには、基礎となるEclipseLink APIへのフル・アクセスを可能にする幅広いベンダー拡張機能(注釈および永続性単位プロパティ)があります。
詳細は、次を参照してください。
『EclipseLink Developer's Guide』の「Java Persistence API Overview」(http://wiki.eclipse.org/Introduction_to_Java_Persistence_API_%28ELUG%29
)
『EclipseLink Developer's Guide』の「Introduction to EclipseLink JPA」(http://wiki.eclipse.org/Introduction_to_EclipseLink_JPA_%28ELUG%29
)
http://wiki.eclipse.org/EclipseLink/UserGuide/Developing_JPA_Projects_%28ELUG%29
TopLinkでは、EJBエンティティBeanの使用を必要とするアプリケーションにCMPサポートを提供します。このサポートは、主なアプリケーション・サーバーで使用できます。TopLinkのCMPサポートにより、アプリケーション・コードから透過のEJB 1.0、1.1、2.0および2.1 CMPソリューションが開発者に提供されますが、TopLinkランタイムの利点も引き続きすべて活用できます。詳細は、2.14項「CMPを使用するEJBエンティティBeanのアーキテクチャについて」を参照してください。
アプリケーションは、クライアントまたはセッションBeanレイヤー内からコンテナ管理の永続性を備えたTopLink対応のエンティティBeanに直接アクセスできます。TopLinkには、エンタープライズ・エンティティBeanとのリレーションシップで標準のJavaオブジェクトを使用するための機能も用意されています。
注意: TopLinkでは、EJB 1.0、1.1、2.0、2.1およびJPAが完全にサポートされますが、『Oracle TopLink開発者ガイド』のこのエディションでは、EJB 2.0、2.1およびJPAにのみ重点を置いて説明します。TopLinkによるEJB 1.0および1.1のサポートの詳細は、『Oracle TopLink開発者ガイド』の旧エディションを参照してください。 |
EJBエンティティBeanを使用するための別のオプションとして、アプリケーションでのTopLinkのBMPの使用があります。このアーキテクチャを使用すると、EJB APIを介して永続データにアクセスできますが、プラットフォームからは独立しています。詳細は、2.15項「BMPを使用するEJBエンティティBeanのアーキテクチャについて」を参照してください。
BMPアプローチには移植性があります。つまり、開発後にアプリケーションをアプリケーション・サーバーのプラットフォーム間で移動できます。
Webサービス・アーキテクチャは3層またはセッションBeanのアーキテクチャと類似しています。ただし、Webサービス・アーキテクチャでは、セッションBeanを使用せず(または使用する他に)、ビジネス・ロジック(サービス)をWebサービスにカプセル化します。Webサービス・アーキテクチャでは、クライアントはXMLを介してアプリケーションと通信します。
他のアーキテクチャの場合と同様に、TopLinkを使用して、リレーショナルまたはEISデータ・ソースへオブジェクトを永続化できます。なお、Webサービス・アーキテクチャでは、TopLinkを使用して、Webサービスで使用するXMLスキーマか、またはWebサービスのXMLシリアライザとして使用するXMLスキーマへ、オブジェクト・モデルをマッピングすることもできます。
詳細は、2.17項「Webサービス・アーキテクチャについて」を参照してください。
2層(またはクライアント/サーバー)アプリケーションは、TopLinkアプリケーションでデータベースに直接アクセスするアプリケーションです。ここで説明した他のアーキテクチャほど一般的ではありませんが、TopLinkでは、より小規模のアプリケーションまたは埋込みデータ処理のアプリケーションのために、このアーキテクチャをサポートしています。詳細は、2.12項「2層アーキテクチャについて」を参照してください。