EJB、JPA、JSFによるWebアプリケーションの構築 - パート1:データ・モデルの構築

この方法によって、スキーマをインストールしてデータベースに接続し、アプリケーション・ファイルを編成するアプリケーションとプロジェクトを簡単に作成できます。 さらに、Oracle JDeveloperのIDEを操作して、アプリケーションのビジネス・サービスを作成します。

スキーマのインストール:Oracle Technology Network(OTN)からスキーマのzipファイルをダウンロードしてインストールします。 キュー・カードでは、Fusion Order Demo(FOD)スキーマの一部である表が使用されています。

新規アプリケーションとプロジェクトの作成:Create Applicationウィザードを使用して、アプリケーション、およびEJBコンポーネント・モデルとアプリケーションのユーザー・インタフェース部分用のプロジェクトを作成します。

データベース接続の作成:Create Database Connectionダイアログを使用して、スキーマへの接続を作成します。

表からのエンティティの作成:Create Entities from Tablesウィザードを使用して、JPAエンティティを作成します。

EJBダイアグラムの作成:Create EJB Diagramダイアログを使用し、表をダイアグラムにドラッグ・アンド・ドロップします。

Session Beanの作成:コンポーネント・パレットを使用し、Create Session Beanウィザードを起動します。

名前付き問合せの追加:ダイアグラムのエンティティをダブルクリックし、ソース・エディタで開きます。そこでサンプル・コードを追加します。

サンプルJavaクライアントの作成と実行:Create Sample Java Clientダイアログを使用し、ファイルを作成します。次に、ソース・エディタで編集します。

Java EEコンテナ外部でのJavaサービスの実行:Create Java Service Facadeウィザードにより呼び出されたCreate Persistence Unitダイアログを使用し、Java EEコンテナ外部で実行される永続性ユニットを作成します。

データ・コントロールとしてのEJBの公開:アプリケーション・ナビゲータで FODFacadeBean.javaからデータ・コントロールを作成します。

 

スキーマのインストール

tell me more iconスキーマのインストール

キュー・カードの手順と例は、Fusion Order Demo(FOD)スキーマの一部である表に基づいています。 また、このリリースのほかの補足情報と同様に、Oracle JDeveloper 11gに付属しているサンプル・アプリケーションのデータベースとして、このスキーマが使用されます。 このスキーマをインストールしていると便利です。インストールは1回で済みます。 FODスキーマをすでにインストールしている場合は、この手順をスキップして次のカードに進んでください。 [ 詳細はこちら]





  1. OTNへ移動 OTNからスキーマのzipファイルをダウンロードします。 スキーマを以前に作成している場合は、次のキュー・カード cur cards iconに進んでください。
  2. ファイルを適切な場所( c:\tempなど)に解凍します。
  3. File メニューから「 Open 」を選択します。 ワークスペース c:\temp\Infrastructure\Infrastructure.jwsを開きます。
  4. プロジェクトを移行するよう指示されたら、「 Yes 」をクリックして確定します。次に「 OK 」をクリックします。
  5. アプリケーション・ナビゲータで、「 MasterBuildScript 」プロジェクトを展開します。 Resourcesの下にある「 build.properties 」をダブルクリックして、エディタで開きます。
  6. build.propertiesファイルに適切な値を設定します( jdeveloper.homeと、 jdbc.*および db.*のすべてを設定)。 ほかのプロパティは、すべてデフォルト値のままにしておきます。 demoユーザーの名前を FODにする必要があります。
    関連する設定は、次のとおりです。
    jdeveloper.home            Oracle JDeveloperをインストールした /jdeveloperディレクトリ( c:/JDeveloper_11/jdeveloper/など)
    jdbc.urlBase                   データベースのベースURL( jdbc:oracle:thin:@localhostなど)
    jdbc.port                       データベースのポート番号( 1521など)
    jdbc.sid                         データベース・システム識別子( XEまたは ORCLなど)
    db.adminUser                管理者権限をもつデータベース・ユーザー( systemなど)
    db.demoUser.tablespace FODユーザーがインストールされる表領域名( USERSなど)
  7. MasterBuildScriptプロジェクトで、「 build.xml 」ファイルを選択します。
  8. Structureウィンドウで、「 refreshSchema 」ターゲットを右クリックして、「 Run Target "refreshSchema" 」を選択します。
  9. 入力の指示が表示されたら、管理者権限をもつデータベース・ユーザーのパスワードを入力します。

    tell me more iconIDE内

    Antタスクの実行後、Oracle JDeveloper Logウィンドウで build successfulメッセージを確認できます。 [ 詳細はこちら]



 

新規アプリケーションとプロジェクトの作成

tell me more icon新規アプリケーションとプロジェクトの作成

Oracle JDeveloperアプリケーションは、組織構造の最上位レベルです。 アプリケーションの作成中に、ユーザーが作業しているオブジェクトの情報が格納されます。 開発中には、プロジェクトと環境設定が追跡されます。 [ 詳細はこちら]





  1. Create Applicationウィザードを開きます(「 File」→「 New」→「 General」→「 Applications」→「 Application」)。
  2. アプリケーション名に OrdersApplicationと入力して、例に従います。
  3. A pplication Package Prefix フィールドに oracleと入力します。
  4. Applica tion Template リストから「 Java EE Web Application 」を選択し、「 Next 」をクリックします。

    tell me more iconアプリケーション・テンプレート

    アプリケーション・テンプレートを使用すると、適切なテクノロジーの組合せが事前に指定されているため、標準アプリケーションのプロジェクト構造を素早く作成できます。 テンプレートから作成された新規アプリケーションは、プロジェクト階層に分割されてアプリケーション・ナビゲータに表示されます。各プロジェクトには関連するテクノロジー・スコープが設定されています。 [ 詳細はこちら]



  5. ステップ2で、ビューおよびコントローラ・プロジェクトの名前として UserInterfaceと入力し、「 Next 」を2回クリックします。
  6. ステップ4で、モデル・プロジェクトの名前として EJBModelと入力し、「 Finish 」をクリックします。
  7. アプリケーション・ナビゲータで「 Application Resources 」パネルを開き、このアプリケーションのリソースの表示場所を確認します。

    tell me more iconIDE内

    アプリケーション・ナビゲータでは、プロジェクトは階層内の最上位レベルとして表示されます。 アプリケーション・ナビゲータは、次のように表示されます。 [ 詳細はこちら]



 

データベース接続の作成

tell me more iconデータベース接続の作成

ユーザーが接続の詳細を把握しているデータベースについては接続が可能です。または、キュー・カードの例に使用されているサンプル・スキーマをインストールして、データベースへの接続を確立します。 サンプル・スキーマをインストールした場合、記載されているとおりに従ってキュー・カードの手順を実行できます。 独自のデータベースを使用している場合は、必要に応じて固有の値を設定できます。 [ 詳細はこちら]





  1. Create Database Connectionダイアログを開きます(「 File」→「 New」→「 General」→「 Connections」→「 Database Connection」)。
  2. Application Resources 」をCreate Connection In のオプションとして選択していない場合は、ここで選択します。
  3. 接続の名前を入力し、接続タイプを選択して、ユーザー名とパスワードを入力します。 この例では、接続名に FOD、ユーザー名に fodを使用します。
  4. Test Connection 」をクリックして、接続可能であることを確認します。
  5. 接続に成功したら、「 OK 」をクリックします。
  6. アプリケーション・ナビゲータで、 Application Resourcesパネルの「 Connections 」および「 Database 」ノードを展開し、データベース・オブジェクトを表示します。

    tell me more iconIDE内

    データベース接続がアプリケーションのリソースとして設定されました。 [ 詳細はこちら]



 

表からのエンティティの作成

tell me more icon表からのエンティティの作成

Enterprise JavaBeans(EJB)テクノロジーは、ビジネス・ロジックをカプセル化するJava Platform, Enterprise Edition(Java EE)のサーバー側コンポーネント・アーキテクチャです。 EJBテクノロジーによって、Javaテクノロジーに基づくセキュアで移植可能な分散トランザクション・アプリケーションを迅速かつ容易に開発できます。 [ 詳細はこちら]





  1. アプリケーション・ナビゲータで、今作成した EJBModelプロジェクトを選択し、Create Entities from Tablesウィザードを起動します(「 File 」→「 New 」→「 Business Tier 」→「 EJB 」→「 Entities from Tables 」)。
  2. ステップ2では、「 Next 」をクリックすることで、ウィザードによってデフォルトの永続性ユニット定義が作成されます。
  3. ステップ3で、 Online Database Connection が選択されていることを確認し、「 Next 」をクリックします。
  4. ステップ4で、選択されたデータベース接続が FODであることを確認し、「 Next 」をクリックします。

    tell me more iconデータベースへの接続

    先に作成したデータベース接続は、アプリケーション・リソースとして利用可能です。デフォルトで選択されていない場合は、 Connectionドロップダウン・リストから選択できます。 [ 詳細はこちら]



  5. ステップ5で、「 Query 」をクリックし、 A vailable リストに移入します。

    tell me more iconデータベースへの問合せと表の選択

    ウィザード・ページで、「 Query 」をクリックすることで、データベースに問い合わせて、利用可能な表をすべてリスト化できます。 表のリストからは、アプリケーションで使用したい表を選択できます。 この例では、「 ORDERS 」表と「 ORDER_ITEMS 」表を選択します。 [ 詳細はこちら]



  6. ORDERS 」表と「 ORDER_ITEMS 」表を A vailable リストから選択し、「 shuttle」をクリックして Selec ted リストに移動させます。 「 Next 」をクリックします。
  7. ステップ6では、デフォルトのパッケージ名をそのまま使用します。 Entity Class Optionsの下に次の内容が選択されていることを確認し、「 Next 」をクリックします。
    Fiel ds
    Implement java.io. Serializable
    Collection Type for Relationship Fields: java.util.List
  8. ステップ7では、デフォルト値をそのまま使用して、「 Finish 」をクリックします。
  9. saveSave Allをクリックして作業内容を保存します。

    tell me more iconIDE内

    アプリケーション・ナビゲータの Application Sourcesノード内にOrdersとOrderItems用のJavaファイルがそれぞれ作成されます。 これらはOrders表とOrder_Items表から作成されたJPAエンティティです。 [ 詳細はこちら]



 

EJBダイアグラムの作成

tell me more iconEJBダイアグラムの作成

ダイアグラムでEnterprise JavaBeansをモデル化することで、開発段階で設計を視覚化できます。 Beanがモデル化される際は、基礎となる実装ファイルも作成されます。 [ 詳細はこちら]





  1. アプリケーション・ナビゲータで「 EJBModel 」プロジェクトを選択し、Create EJB Diagramダイアログを開きます(「 File」→「 New」→「 Business Tier」→「 EJB」→「 EJB Diagram」)。
  2. ダイアグラム名として EJB Diagramと入力します。パッケージ名はデフォルトのまま使用します。 「 OK 」をクリックします。
  3. OK 」をクリックしてダイアグラムを EJBModel (EJBModel.jpr)永続性ユニットと関連づけます。

    tell me more iconダイアグラムへのオブジェクトの追加

    ダイアログで作成したEJBダイアグラムがエディタ領域内に表示されます。 [ 詳細はこちら]



  4. アプリケーション・ナビゲータで、「 Orders 」エンティティと「 OrderItems 」エンティティを選択し、EJBダイアグラムにドラッグ・アンド・ドロップします。
  5. saveSave Allをクリックして作業内容を保存します。

    tell me more iconIDE内

    ダイアグラムは、OrdersとOrderItemsに対して実行されたリバース・エンジニアリング・アクションに対応するEJBコンポーネントを表示します。 OrdersエンティティとOrderItemsエンティティは、それらの関係の説明とともに表示されます。 [ 詳細はこちら]



 

Session Beanの作成

tell me more iconSession Beanの作成

セッション・ファサードは、基礎となるEJBとの統一されたインタフェースをクライアント・オブジェクトに提供します。 クライアントは、サーバーに存在し、適切なEJBメソッドを呼び出すファサードのみとやりとりをします。 その結果、クライアントとEJBの間での依存関係と通信が減少します。 セッション・ファサードなしでリモート・アクセスを実行している場合、クライアントがネットワーク経由でEJB 3.0エンティティに直接アクセスするには、多数のリモート呼出しが必要になります。 そのため、大量のネットワーク通信が発生して、パフォーマンスが低下します。 さらに、ファサードがない場合、クライアントはビジネス・オブジェクトの実装に直接依存するので、EJBのインタフェースが変化すると、クライアント・オブジェクトも変更しなくてはなりません。 [ 詳細はこちら]





  1. コンポーネント・パレットにおいて、 EJB Componentsページの EJB Nodesパネルで、「 session beanSession Beanコンポーネントを選択し、ダイアグラムにドラッグ・アンド・ドロップします。
  2. 起動したCreate Session Beanウィザードで、EJB名として FODFacadeを入力し、「 Next 」をクリックします。
  3. ウィザードのステップ2で、以下のデフォルト・オプションが設定されていることを確認します。
    Session Type: State less
    Transaction Type: Container
    Generate Session Facade Methods: selected
    Entity Implementation: JPA Entities
    Persistence Unit: EJBModel (EJBModel.jpr)
  4. Next 」をクリックします。
  5. ステップ3で、「 Orders」ノードと「 OrderItems」ノードを展開し、「 Orders.findAllByRange」エンティティ・メソッドと「 OrderItems.findAllByRange」エンティティ・メソッドの選択を解除します。 「 Next 」をクリックします。
  6. ステップ4では、デフォルトのBeanクラス名をそのまま使用し、「 Next 」をクリックします。
  7. ステップ5で、 Implement a Remote Interface Imp lement a Local Interface の両方が選択されていることを確認します。 デフォルトのインタフェース名をそのまま使用します。 「 Next 」をクリックします。

    tell me more iconローカル・インタフェースまたはリモート・インタフェースの使用

    クライアントは、EJBコンポーネントに対し、そのインタフェースを介してアクセスします。 リモート・インタフェースは、別の仮想マシンで実行されるクライアント・アプリケーション(Javaクライアントなど)のために使用されます。 ローカル・インタフェースは、同じ仮想マシンで実行されるクライアント・アプリケーション(Webクライアントなど)のために使用されます。 [ 詳細はこちら]



  8. 作成したクラスのサマリーを確認し、「 Finish 」をクリックします。

    tell me more iconIDE内

    これで作成したSession BeanがEJBダイアグラムに含まれました。 [ 詳細はこちら]



 

名前付き問合せの追加

tell me more icon名前付き問合せの追加

名前付き問合せを使用すると、設計時に問合せを定義し、実行時に使用できます。 NamedQueryメタデータ文は、デフォルトでは、Create Entities from Tablesウィザードを使用して OrderItems.javaエンティティに作成されています。 これは、OrderItems表からすべての行を取得します。 [ 詳細はこちら]





  1. EJBダイアグラムで、「 OrderItems」エンティティをダブルクリックし、ソース・エディタで開きます。

    tell me more iconソース・コードの編集

    ソース・エディタで使用できる機能は、次のとおりです。 [ 詳細はこちら]



  2. 数量によって注文項目を検索する問合せをクラスに追加します。
    code sample icon サンプル・コードを使用してください
  3. Make iconMakeをクリックして、 OrderItems.javaクラスをコンパイルします。
  4. Session Beanに新しいメソッドを追加するためには、アプリケーション・ナビゲータで「 FODFacadeBean.java 」ノードを右クリックし、「 Edit Session Facade 」を選択します。
  5. Specify Session Facade Optionsダイアログで「 OrderItems」ノードを展開し、「 OrderItems.findByQuantity」を選択します。 「 OK」をクリックします。

    tell me more iconIDE内

    Specify Session Facade Optionsダイアログでは、利用可能なノードから新しいメソッド選択することでそのメソッドを公開できます。 このプロジェクトのすべてのエンティティはツリーのノードとして表示されます。 [ 詳細はこちら]



 

サンプルJavaクライアントの作成と実行

tell me more iconサンプルJavaクライアントの作成と実行

Oracle JDeveloperには、EJBのテストに利用可能なサンプルJavaクライアント・ユーティリティが含まれています。 サンプルJavaクライアントを生成するには、アプリケーション・ナビゲータでSession Beanを右クリックし、「 New Sample Java Client 」を選択します。 [ 詳細はこちら]





  1. アプリケーション・ナビゲータで「 FODFacadeBean.java 」を右クリックし、「 New Sample Java Client 」を選択します。
  2. クライアントのクラス名が oracle.model.FODFacadeClientであることを確認します。
  3. Appli cation Server Connection ドロップダウン・リストで IntegratedWLSConnectionが選択されていることを確認します。「 OK 」をクリックします。
  4. FODFacadeClientクラスで、値パラメータ 3FindByQuantityメソッドに追加します。 (List<OrderItems>)fODFacade.queryOrderItemsFindByQuantity( 3))
  5. save allSave Allをクリックして作業内容を保存します。
  6. アプリケーション・ナビゲータで、「 FODFacadeBean.java 」を右クリックして、「 R un 」を選択し、統合WLSサーバー・インスタンスでファサードBeanを起動します。
  7. デフォルトのサーバー・インスタンスが起動したら、「 FODFacadeClient.java 」を右クリックし、「 R un 」を選択します。

    tell me more iconサンプル・クライアントの実行

    ビジネス・サービスをテストするには、アプリケーション・ナビゲータでSession Beanを右クリックしてから「 R un 」を選択します。 起動していない場合は、Oracle JDeveloperが自動的にDefaultServerインスタンスを起動します。 次に、Oracle JDeveloperは、アプリケーションをコンパイルし、DefaultServerインスタンスにデプロイします。 [ 詳細はこちら]



  8. FODFacadeClient.javaクラスで、 queryOrderItemsFindByQuantityメソッドの結果だけを確認するために、 queryOrderItemsFindAllメソッドに対応する forループをコメントアウトし、 queryOrdersFindAllメソッドに対応する forループをコメントアウトします。

    tell me more iconクラスの編集

    FODFacadeClient.javaクラスを編集し、次の内容をコメントアウトすることで、 FindByQuantityメソッドの結果をより効果的に視覚化できます。 [ 詳細はこちら]



  9. makeMakeをクリックして、クラスを再コンパイルします。
  10. FODFacadeClient.java 」を右クリックし、「 R un 」を選択します。

    tell me more iconIDE内

    コードを編集し、サンプル・クライアントを再実行すると、Logウィンドウには '3'句(数量が3以上の注文項目)によって返された行のみが表示されます。 [ 詳細はこちら



 

Java EEコンテナ外部でのJavaサービスの実行

tell me more iconJava EEコンテナ外部でのJavaサービスの実行

永続性ユニットは、コンテナの内部または外部で実行するように構成することができます。 EJB 3.0では、アプリケーション・サーバーを使用することなく、Pure Java SE環境のエンティティを実行できます。 これを実行する理由は、単純なJava SEテストベッドを作成して(JUnitを使用)、アプリケーション・サーバーでの配置/実行のオーバーヘッドがない状態でエンティティの動作をテストするためです。 もう1つの理由は、Swingアプリケーションをローカルで実行するためです。 [ 詳細はこちら]





  1. アプリケーション・ナビゲータで「 persistence.xml 」を右クリックし、「 New Java Service Facade 」を選択します。
  2. デフォルトのサービス・クラス名をそのまま使用し、 Generate a main() method with sample client code が選択されていることを確認します。 「 Next 」ボタンをクリックして、新しい永続性ユニットを作成します。
  3. ステップ2で、永続性ユニット名として outsideを入力します。 JDBC Connection が選択され、作成したデータベース接続(例: FOD)がドロップダウン・リストに表示されていることを確認します。 「 Next 」をクリックします。

    tell me more iconJavaサービス・ファサードの作成

    Create Java Service Facadeウィザードでは、Java EEコンテナの内部または外部で使用する新しい永続性ユニットを作成できます。 [ 詳細はこちら]



  4. ステップ3では、「 Orders.findAllByRange 」、「 OrderItems.findAllByRange 」、および「 OrderItems.findByQuantityByRange 」メソッドの選択を解除し、「 Next 」をクリックします。 次に、「 Finish 」をクリックします。
  5. JavaServiceFacade.javaファイルをソース・エディタで編集し、数量によって注文項目を検索し、その数量を取得する新しい行をクラスに追加します。
    code sample icon サンプル・コードを使用してください
  6. makeMakeをクリックして、 JavaServiceFacadeクラスをコンパイルします。
  7. アプリケーション・ナビゲータで、「 JavaServiceFacade.java 」を右クリックし、「 R un 」を選択します。

    tell me more iconJavaサービス・ファサードの実行

    Javaサービス・ファサードを実行すると、Logウィンドウには、Java EEコンテナ外部で実行したクラスの実行結果が表示されます。取得したレコードの中から3より多い数量値が結果として返されます。 [ 詳細はこちら]



  8. アプリケーション・ナビゲータで、「 persistence.xml 」をダブルクリックし、ファイルの内容を表示します。

    tell me more iconIDE内

    アプリケーション・ナビゲータで persistence.xmlをダブルクリックすると、デフォルトのエディタでファイルが開かれます。 「 Overview 」をクリックし、JPA永続性ディスクリプタのために概要エディタでファイルを表示します。 [ 詳細はこちら]



 

データ・コントロールとしてのEJBの公開

tell me more iconデータ・コントロールとしてのEJBの公開

データ・モデルを作成したあと、Oracle Application Developer Framework(Oracle ADF)のフレームワークのためにEJBをデータ・コントロールとして公開できるようになります。 これによって、ユーザー・インタフェースのEJBへのバインドが簡素化されます。 [ 詳細はこちら]





  1. アプリケーション・ナビゲータで「 FODFacadeBean.java 」を右クリックし、「 Crea te Data Control 」を選択します。
  2. Choose EJB Interfaceダイアログで、「 Local 」を選択し、「 OK 」をクリックします。

    tell me more iconEJBインタフェースの選択

    ローカル・インタフェースは、Webクライアントなど、同じ仮想マシン上で実行されるクライアントのために使用されます。 このアプリケーション用のWebページを構築しているため、 Local が適切な選択です。 [ 詳細はこちら]



  3. save allSave Allをクリックして作業内容を保存します。
  4. 作業を続行する前に、「 EJBModel 」プロジェクト・ノードを閉じます。

    tell me more iconIDE内

    Data Controlsパネルのルート・ノードは、ビジネス・サービスのために登録されたデータ・コントロールを示しています。 データ・コントロール自体は選択できませんが、データ・コントロールがサポートするオペレーションは選択できます。 [ 詳細はこちら]



 

cue cards icon 次のステップ

 

Copyright © 1997, 2008, Oracle. All rights reserved.