Business Components for Javaは、Oracleデータベースだけではなく、SQL ServerおよびDB2に対して稼働できます。アプリケーションのニーズに応じて、次のような開発シナリオがあります。
Business Components for Javaをデータベースに接続するには、次のような様々な構成があります。
次のセクションで、これらのシナリオについて詳しく説明します。
このシナリオは、Oracleデータベースを使用する場合のデフォルトの構成です。これは、Oracleの有効なJDBCデータ型を利用することにより、Oracle SQL構文およびJBOドメインの利点を最大限に活用するために最適な構成です。
この構成を選択した場合は、次の必須ライブラリが追加されます。
BC4J Oracle Domains
このシナリオでは、SQL ServerおよびDB2データベースを稼働できるようにします。この構成を使用してOracleデータベースを稼働させることも可能ですが、次に記載されている切替え可能シナリオの方が適切です。SQL92のシナリオでは、ドメイン・オブジェクトは使用できません(Java型のマップを使用します)。このためパフォーマンスが低下します。
外部データソースへの接続手順の詳細は、「SQL Serverについての説明」を参照してください。
OLiteのシナリオは、Oracle9i Liteデータベースを稼働する場合のみ使用されます。この構成は、SQL92構成とよく似ており、適用される一部の制限が同じです。
OracleおよびSQL92ベースのデータベースの両方を稼働している場合で、設計時と実行時にターゲット・データベースを切り替える際にこの構成は有効です。この構成を使用すると、Java型のマップよりも高速で効率がよいというドメイン型の利点を活用できますが、SQL92言語の制限を受けることになります。
注意: このシナリオでは、適切なドメイン・ライブラリを使用しているかどうかを手動で確認する必要があります。後述の表では、OracleおよびGenericの2つのドメイン型があることに注意してください。Oracleを稼働させている場合は、必ずBC4J Oracle Domainsを使用します。その他のデータベースを稼働させている場合は、ドメイン型をBC4J Generic Domainsに切り替える必要があります。データソースの切替えの詳細は、「データソースの切替え」のトピックを参照してください。
SQL92標準で宣言されたデータ型ではなく、拡張データ型を使用しているデータベースの場合は、データベース型をJava型へマップするカスタム型のマップを設計する必要があります。SQL92のシナリオと同様に、ドメイン型は使用できません。このシナリオでは、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 |
SQL92 |
Oracle |
BC4J Oracle Domains |
カスタム |
jdbc:odbc:db_name |
SQL92 |
カスタム |
プロジェクトを開始する前に、接続タイプを選択します。このとき、ビジネス・コンポーネント・フレームワークは、SQL言語および型マップのデフォルト値を選択します。これらの値は、ビジネス・コンポーネント・プロジェクト・ウィザードのドロップダウン・ボックスに表示されます。
外部データソースの接続URLは、jdbc:db_type:db_name:port です。各部分は次のとおりです。
sqlserver
またはdb2
など該当するドライバ名になります。一般的な接続URLは次のようになります。
jdbc:db2:ORDENT
jdbc:microsoft:sqlserver://<db-host>:1433;SelectMethod=cursor
Business Components for Javaエンティティ・オブジェクトは、リレーショナル表のデータ内容を管理します。Oracleデータベースに接続することがわかっている場合は、Business Components for Javaで最適化を行うことができます。ただし、アプリケーションを任意のSQLデータソースで実行する必要がある場合は、これらの最適化は使用できません。一般に、アプリケーション用に生成されるSQLのスタイルをSQL言語(SQL dialect)と呼びます。
Business Components for Javaには、次の4つのSQL言語があります。
Oracle: デフォルトのOracle9i シナリオでのみ使用します。
接続タイプを選択した場合、フレームワークでは、デフォルトでどのSQL言語を使用するかが認識されます。作成したすべてのビジネス・コンポーネントには、適切なSQLスタイルが反映されます。たとえば、SQL92言語を選択した場合は、バインドは「:1」ではなく「?」の形式になります。
注意: ビジネス・コンポーネント・アプリケーションの設計者が、カスタム設計のビュー・オブジェクトで使用するSQL言語は、生成されるSQLの言語とも一致する必要があります。
OLiteシナリオおよびSQL92シナリオでは、ドメインは使用できません(例外としてDateとNumberは使用できます)。ドメインが使用できない場合は、Java型で、データベース情報をJavaの表現に変換し、もう一度元に戻す必要があります。この処理は、型マップを使用して行います。
Business Components for Javaには2種類のマップが用意されています。
Oracle: データベース列はoracle.jbo.domain型にマップされます。
SQL92標準で宣言されたデータ型ではなく、拡張データ型を使用しているデータベースの場合は、データベース型をJava型へマップするカスタム型のマップを設計する必要があります。
ドメイン型は、データベース型へ直接マップするため、Java型のマップに比べて高速かつ効率的です。ビジネス・コンポーネント・フレームワークには、oracle.jbo.domainの2種類の実装が用意されています。
BC4J Oracle Domains: OracleのJDBCドライバを使用して効率よくマップします。
関連項目
外部データソースの開発における制限事項
外部データソースに対するビジネス・コンポーネントの開発方法
型マップについて