Business Components for Javaは、再利用可能なビジネス・コンポーネントから多層データベース・アプリケーションを構築するためのJDeveloperのプログラミング・フレームワークです。通常、このようなアプリケーションは次のものから構成されます。
JavaまたはHTML(あるいはその両方)で作成されたクライアント側ユーザー・インタフェース
ビジネス・ロジックおよびビジネス・オブジェクトのビューを提供する1つ以上のビジネス・ロジック層コンポーネント
基礎となるデータを保存する、データベース・サーバー内の表
次の図は、多層構成の例を示します。
次の図では、クライアント/サーバーと多層アプリケーションを比較します。典型的なクライアント/サーバー・アプリケーションでは、ビジネス・ルール、ビューおよびカスタム・コードがクライアント側のフォームに保存されています。クライアントはすぐにコードで重くなってしまうため、メンテナンスが困難です。たとえば、(最低給与が上がったときのように)ルールが変更される場合、開発者はそのルールを使用するフォームをすべて更新する必要があります。
これに対し、Business Components for Javaフレームワークを使用して構築した多層アプリケーションでは、クライアントが共有可能なコンポーネント内にビュー、ビジネス・ルールおよびカスタム・コードがデプロイされます。Business Components for Javaフレームワークを使用することにより、このようなコンポーネントの構築、メンテナンス、使用、再利用およびカスタマイズが簡単に行えます。サポートされているプラットフォームにデプロイする場合、コンポーネントを変更する必要はありません。この方法には、次のような多くの機能と利点があります。
機能 |
説明 |
---|---|
カプセル化されたビジネス・ロジック |
検証などのビジネス・ロジックは、ビジネス・ロジック層に配置されて実行されるため、真のThinクライアント、簡単なカスタマイズ、および再利用が可能になります。 |
柔軟なデータ・ビュー |
データのビューはSQLに基づいており、基礎となるエンティティから完全に分離されているため、柔軟な表示方式が可能になります。 |
Thinクライアント |
Business Components for Javaでは、Thinクライアント、すなわちビジネス・ロジック層で処理されるビジネス・ロジックおよびデータ・ビューに対する単純なウィンドウがサポートされています。 |
柔軟なデプロイメント |
CORBAサーバー・オブジェクトおよびEJBセッションBeanとして、ローカルまたは標準サーバー・プラットフォームにデプロイします。 |
データベース対話 |
Business Components for Javaのコンポーネントベースのフレームワークでは、マスター/ディテールの整合およびロックなど、繰返しの多いコーディング時の作業が処理されます。 |
トランザクション管理 |
Business Components for Javaでは、キャッシュの変更が管理され、データベースへの変更のポストが処理されます。 |
Business Components for Javaは、ドメイン固有のコンポーネントを構築およびカスタマイズするためのフレームワークです。開発者は、フレームワークにより提供されるクラスおよびインタフェースからオブジェクトを導出し、アプリケーション特有の機能を実装するカスタム・コードを追加します。このプロセスをサポートするために、次のビジネス・コンポーネントが使用されます。
オブジェクト |
説明 |
---|---|
エンティティ・オブジェクトは、データベース表、ビューまたはシノニムのビジネス・ロジックをカプセル化します。クライアントは、1つ以上のビュー・オブジェクトを介してエンティティ・オブジェクトのデータにアクセスします。1つのエンティティ・オブジェクトは多数のビュー・オブジェクトで使用できます。エンティティ・オブジェクト間の関係は、Associationにより表されます。 |
|
ビュー・オブジェクト |
ビュー・オブジェクトは、SQL問合せを使用して、エンティティ・オブジェクトから選別された属性のサブセットを指定します。クライアントは、結果セットの中を移動し、属性値を取得および設定することにより、データを操作します。ビュー・オブジェクト間の関係は、ビュー・リンクを使用して表されます。 |
アプリケーション・モジュール |
アプリケーション・モジュールは、ビュー・オブジェクト、ビュー・リンク、および他のアプリケーション・モジュールにより定義されたトランザクションの論理的なコンテナです。 |
作成したビジネス・コンポーネントはそれぞれ、XMLファイルおよび1つ以上のJavaファイルによって表されます。XMLファイルにはメタデータ(設計時にウィザードを使用して宣言したアプリケーションの機能および設定に関する説明的な情報)が格納され、Javaファイルには(アプリケーション固有の動作を実装する)オブジェクト・コードが格納されます。各オブジェクトは、Javaのパッケージのディレクトリベースのセマンティックを使用してパッケージ内に編成されます。
たとえば、DeptView.xml
およびDeptViewImpl.java
ファイルは、d2ePackage
ディレクトリ内に格納されているため、d2ePackage
パッケージ内に存在しています。
Business Components for Javaフレームワークでは、パッケージを選択すると、パッケージに対応したディレクトリにコードが配置されます。
次に示すように、ビジネス・コンポーネントを表すJavaファイルおよびXMLファイルでは、ファイルが格納されているパッケージの識別に同じような構文が使用されています。
Java |
XML |
---|---|
package d2ePackage; |
<ViewObject |
JDeveloperでは、Business Components for Javaフレームワークを統合的にサポートしています。ウィザードやプロパティ・エディタのような設計ツールを使用し、属性、関係およびビジネス・ルールといったオブジェクトの特性を定義します。これによって、JDeveloperで、実行可能なJavaコードとXMLが生成され、コンポーネントに定義した動作が実装されます。
理論的には、ユーザーがこのコードを書くことは可能です。しかし実際は、必要なすべてのコードを確実に生成し、すべての依存性を解決するため、ウィザードを使用することをお薦めします。その後、アプリケーションのニーズに合せて生成されたコードを編集できます。JDeveloperに限定されたものではありませんが、通常、開発プロセスでは次のような問いに答える必要があります。
エンティティおよびビジネス・オブジェクトは何ですか。エンティティ・オブジェクトを個別に使用する(たとえば、顧客など)ことも、複数のエンティティ・オブジェクトを組み合せる(たとえば、ヘッダー、明細品目、出荷および配送で構成された発注書など)こともできます。
エンティティをどのように関連付けますか。たとえば、部門と従業員との間に1対多のAssociationを定義できます。
検証規則を何にしますか。たとえば、ビジネス・ルールにより、勤続年数が5年を超える従業員の最低給与を指定できます。規則は、属性、エンティティおよびビジネス・オブジェクトに適用できます。
どのようなデータを表示し、操作しますか。ビューを作成することで、エンティティからのデータ選択およびフィルタリングを行うSQL問合せを定義し、ネットワーク通信量やクライアント側の処理要件を最小限に抑えます。
データベース内の表に格納されているデータを表すには、実世界のエンティティ(たとえば、従業員など)が使用されます。
JDeveloperでは、表のデータおよびメタデータを使用し、エンティティを表すJavaクラスが作成されます。このJavaコードを編集し、デフォルトの属性および動作を変更できます。
JDeveloperではメタデータを、カスタマイズ可能なXMLファイルでも表します。
JDeveloperでは、データを選択する条件を指定するためのデフォルトのビュー・オブジェクトが作成されます。デフォルトの他に(またはかわりに)、独自のビュー・オブジェクトも定義できます。
JDeveloperでは、各ビュー・オブジェクトについてカスタマイズ可能なJavaクラスが生成されます。このクラスは、ビュー・オブジェクト定義のクラスと行のクラスです。また、ビュー・オブジェクトごとにXMLファイルも生成されます。
アプリケーション・モジュールを定義するには、ウィザードを使用します。アプリケーション・モジュールは、関連するオブジェクトの論理コンテナです。アプリケーション・モジュールにより、トランザクションを定義および実行するコンテキストが提供されます。
ビジネス・コンポーネントを構成するアプリケーション・サービスを設計、構築、テストおよびデバッグした後、このアプリケーション・サービスをデプロイできます。
クライアント・コードによりアプリケーション・モジュールが初期化され、これに含まれるエンティティとビューがロードされます。
ビュー・オブジェクトは、実行時に問合せを実行する際、対応するエンティティ(複数も可)からのデータを操作します。
各ビュー・オブジェクトは、結果セット内の移動に使用できるデフォルトのイテレータを提供します。
問合せで1行以上の結果の行がフェッチされると、各行がRowオブジェクトによって表されます。結果の行の各列値には、Rowオブジェクトの属性を使用してアクセスします。
クライアント・フォーム内のコントロールにより、ユーザーはデータの表示および編集ができます。これらのコントロールはビュー・オブジェクトによって提供された行を表示し、ビュー・オブジェクト自体は基礎となるエンティティ・オブジェクトにバインドされています。このため、ユーザーがコントロール内の値を変更すると、処理が、Business Components for Javaフレームワークからビュー・オブジェクトに送られ、次にビュー・オブジェクトからエンティティ・オブジェクトに送られます。エンティティ・オブジェクトにビジネス・ルールが含まれていれば、このビジネス・ルールにより新しい値は、フレームワークからデータベースに送信される前に検証されます。