外部データソースに対するビジネス・コンポーネントの開発について

Business Components for Javaは、Oracleデータベースだけではなく、SQL ServerおよびDB2に対して稼働できます。アプリケーションのニーズに応じて、次のような開発シナリオがあります。

開発のシナリオ

Business Components for Javaをデータベースに接続するには、次のような様々な構成があります。

次のセクションで、これらのシナリオについて詳しく説明します。

Oracleのシナリオ

このシナリオは、Oracleデータベースを使用する場合のデフォルトの構成です。これは、Oracleの有効なJDBCデータ型を利用することにより、Oracle SQL構文およびJBOドメインの利点を最大限に活用するために最適な構成です。

この構成を選択した場合は、次の必須ライブラリが追加されます。

SQL92のシナリオ

このシナリオでは、SQL ServerおよびDB2データベースを稼働できるようにします。この構成を使用してOracleデータベースを稼働させることも可能ですが、次に記載されている切替え可能シナリオの方が適切です。SQL92のシナリオでは、ドメイン・オブジェクトは使用できません(Java型のマップを使用します)。このためパフォーマンスが低下します。

外部データソースへの接続手順の詳細は、「SQL Serverについての説明」を参照してください。

OLiteのシナリオ

OLiteのシナリオは、Oracle9i Liteデータベースを稼働する場合のみ使用されます。この構成は、SQL92構成とよく似ており、適用される一部の制限が同じです。

切替え可能のシナリオ

OracleおよびSQL92ベースのデータベースの両方を稼働している場合で、設計時と実行時にターゲット・データベースを切り替える際にこの構成は有効です。この構成を使用すると、Java型のマップよりも高速で効率がよいというドメイン型の利点を活用できますが、SQL92言語の制限を受けることになります。

注意: このシナリオでは、適切なドメイン・ライブラリを使用しているかどうかを手動で確認する必要があります。後述の表では、OracleおよびGenericの2つのドメイン型があることに注意してください。Oracleを稼働させている場合は、必ずBC4J Oracle Domainsを使用します。その他のデータベースを稼働させている場合は、ドメイン型をBC4J Generic Domainsに切り替える必要があります。データソースの切替えの詳細は、「データソースの切替え」のトピックを参照してください。

カスタムのシナリオ

SQL92標準で宣言されたデータ型ではなく、拡張データ型を使用しているデータベースの場合は、データベース型をJava型へマップするカスタム型のマップを設計する必要があります。SQL92のシナリオと同様に、ドメイン型は使用できません。このシナリオでは、SQLに関する制限事項は多くはありませんが、これらの制限に注意する必要があります。

接続、SQL言語、型マップおよびドメインの理解

すべての開発シナリオには、JDBC接続、SQL言語、型マップ、ドメインという4つの要素があり、相互に関連しています。JDeveloperは、デフォルトではOracleデータベースとともに稼働するように構成されています。他のデータベースとともに稼働するには、適切な値を使用するように構成する必要があります。比較用に、これらの値を次の表に記載します。

シナリオ 接続URL SQL言語 型マップ ドメイン

Oracle9i

jdbc:oracle:thin

Oracle

Oracle

BC4J Oracle Domains

SQL92

jdbc:db_type:db_name:port

SQL92

Java

なし*

OLite

jdbc:polite:POLite

OLite

Java

なし*

切替え可能

jdbc:oracle:thin
jdbc:db_type:db_name:port

SQL92

Oracle

BC4J Oracle Domains
BC4J Generic Domains

カスタム

jdbc:odbc:db_name

SQL92

カスタム

なし*

接続URL

プロジェクトを開始する前に、接続タイプを選択します。このとき、ビジネス・コンポーネント・フレームワークは、SQL言語および型マップのデフォルト値を選択します。これらの値は、ビジネス・コンポーネント・プロジェクト・ウィザードのドロップダウン・ボックスに表示されます。

外部データソースの接続URLは、jdbc:db_type:db_name:port です。各部分は次のとおりです。

一般的な接続URLは次のようになります。

SQL言語

Business Components for Javaエンティティ・オブジェクトは、リレーショナル表のデータ内容を管理します。Oracleデータベースに接続することがわかっている場合は、Business Components for Javaで最適化を行うことができます。ただし、アプリケーションを任意のSQLデータソースで実行する必要がある場合は、これらの最適化は使用できません。一般に、アプリケーション用に生成されるSQLのスタイルをSQL言語(SQL dialect)と呼びます。

Business Components for Javaには、次の4つのSQL言語があります。

接続タイプを選択した場合、フレームワークでは、デフォルトでどのSQL言語を使用するかが認識されます。作成したすべてのビジネス・コンポーネントには、適切なSQLスタイルが反映されます。たとえば、SQL92言語を選択した場合は、バインドは「:1」ではなく「?」の形式になります。

注意: ビジネス・コンポーネント・アプリケーションの設計者が、カスタム設計のビュー・オブジェクトで使用するSQL言語は、生成されるSQLの言語とも一致する必要があります。

型マップ

OLiteシナリオおよびSQL92シナリオでは、ドメインは使用できません(例外としてDateとNumberは使用できます)。ドメインが使用できない場合は、Java型で、データベース情報をJavaの表現に変換し、もう一度元に戻す必要があります。この処理は、型マップを使用して行います。

Business Components for Javaには2種類のマップが用意されています。

SQL92標準で宣言されたデータ型ではなく、拡張データ型を使用しているデータベースの場合は、データベース型をJava型へマップするカスタム型のマップを設計する必要があります。

ドメイン

ドメイン型は、データベース型へ直接マップするため、Java型のマップに比べて高速かつ効率的です。ビジネス・コンポーネント・フレームワークには、oracle.jbo.domainの2種類の実装が用意されています。


関連項目

外部データソースの開発における制限事項
外部データソースに対するビジネス・コンポーネントの開発方法
型マップについて