このチュートリアルでは、JDeveloper 12cの豊富な機能を利用して、EJB、JPA、JavaServer Facesを使用したWebアプリケーションを作成します。

構築するアプリケーションにはModel-View-Controller(MVC)アーキテクチャが反映されています。モデルはEJBコンポーネントによって、また、ビューとコントローラはJavaServer Facesによって、それぞれ提供されます。ここでは、JSFと互換性のあるコンポーネントのADF Facesセットを使用して、使いやすいWebインタフェースを構築します。

このチュートリアルを実行するには、JDeveloper 12.1.2がインストールされており、HRスキーマを利用してOracle Database 10g以降へアクセスできる必要があります。

目的 所要時間 アプリケーション

このチュートリアルでは、Oracle JDeveloper 12c Version 12.1.2.0.0を使用して、Webアプリケーションを構築します。データ・モデルを構築するため、EJBダイアグラマ、EJB 3.0、Java Persistence API(JPA)を使用します。Webクライアント側では、JavaServer Faces(JSF)が使用されます。メインのマスター/ディテール・ページは、ユーザー・インタフェースの問合せ機能と編集機能を使用して作成されます。また、検索機能を備えたタスク・フローがページの領域として追加されます。
これから作成するアプリケーションの完成版を確認するには、「Download」ボタンをクリックして最終的なアプリケーションのzipファイルをダウンロードし、JDeveloperのmyworkフォルダに解凍してください。

90分 application name.zipのダウンロード
パート1:EJB 3.0を使用したデータ・モデルの構築
最初に、アプリケーションのデータ・モデル部分を構築します。Java Persistence API(JPA)は、オブジェクト・リレーショナル・マッピングのPOJO永続化モデルを提供します。 EJB/JPAコンポーネントを使用してモデルを構築します。JDeveloperに含まれるウィザードを使用すると、EJBプロジェクトやエンティティ、永続性ユニット、またSession BeanやMessage-Driven Beanを段階的に作成できます。エンティティは、オンラインまたはオフラインのデータベース定義や、アプリケーション・サーバーのデータソース接続を使用して構築できます。また、JPAとTopLinkテクノロジーとのシームレスな統合を通じて、完全な永続性パッケージが提供されます。
ステップ1:新規アプリケーションおよびプロジェクトの作成
コンポーネントを作成する前に、まず、アプリケーションとプロジェクトを作成する必要があります。
  1. スタート」→「すべてのプログラム」→「Oracle Fusion Middleware 12.1.2.0.0」→「JDeveloper Studio 12.1.2.0.0」を選択して、JDeveloperを起動します。

  2. ロールを選択するよう指示されたら、「Studio Developer (All Features)」を選択して、「OK」をクリックします。

    起動時のSelect Roleダイアログ
  3. Tip of the Dayウィンドウを閉じます。

    ロードが終了すると、JDeveloper IDEが表示されます。JDeveloperを初めて開いた場合、Start Pageが表示されます。後でStart Pageを再表示する場合は、「Help」→「Start Page」を選択します。

    JDeveloperのStart Page

    JDeveloperについて学習するためのさまざまなオプションが用意されています。これらのオプションについて確認したら、「X」をクリックしてStart Pageタブを閉じます(Xは、タブにマウスを合わせると表示されます)。

  4. Application」タブをクリックして、アプリケーション・ナビゲータに戻ります。「New Application」アイコンをクリックします。

    New Applicationリンク
  5. New Galleryで、「ADF Fusion Web Application」オプションを選択します。

    New Galleryダイアログ

    OK」をクリックします。

  6. Create Applicationダイアログ・ボックスで、アプリケーション名にHR_EJB_JPAと入力します。アプリケーション名を入力すると、ディレクトリ名が自動的に変更される点に注意してください。アプリケーション・パッケージの接頭辞としてoracleと入力します。

    Create Fusion Web Applicationのステップ1
    Fusion Web Applicationオプションを選択すると、2つのプロジェクトが作成されます。
    ウィザードの各ページでデフォルト値を受け入れて「Next」をクリックしていくと、これから使用するプロジェクト名とパッケージ名が表示されます。また、ModelプロジェクトとViewControllerプロジェクトに対して特定の機能を選択できます。
    1つ目のプロジェクトのデフォルト・プロジェクト名はModelであり、デフォルト・パッケージ名はoracle.modelです。
    2つ目のプロジェクトのデフォルト・プロジェクト名はViewControllerであり、デフォルト・パッケージ名はoracle.viewです。
  7. Finish」をクリックします。JDeveloperによってアプリケーション環境が作成されるまで待機します。

  8. 作成された2つのプロジェクトがアプリケーション・ナビゲータに表示されます。右側のペインに表示されるアプリケーション概要を確認すると、手順の完了状況を把握できます。

    Fusion Web Applicationに対して作成されたデフォルトのアプリケーション・ナビゲータ

    アプリケーションには2つのプロジェクトが含まれています。この時点でModelプロジェクトは空ですが、データベース接続を作成するとEJB JPAコンポーネントが設定されます。
    ViewControllerプロジェクトには、UI構築に必要な基本コンポーネントが含まれています。

    Overviewペインでは、アプリケーション開発の手順についてのガイドが提供されています。この段階的な説明に従っていくと、アプリケーションを構築できます。

ステップ2:永続化モデルの作成
ここでは、EJB 3.0 Entity Beanを使用して、部門および従業員の永続化モデルを作成します。 EJB 3.0 Entity Beanを作成するには、以下の手順を実行します。
  1. アプリケーション・ナビゲータで「Model」ノードを右クリックし、コンテキスト・メニューから「New」→「From Gallery」を選択します。

    コンテキスト・メニューのNewオプション

  2. New Galleryで、「All Features」タブを選択し、カテゴリとして「Business Tier」→「EJB」を選択し、「Entities from Tables」項目をダブルクリックします。

    New Galleryダイアログ

    OK」をクリックします。

  3. Create Entities from Tablesウィザードで、「JPA 2.0 Entities (Java EE6)」を選択し、「Next」をクリックします。

    Create Entities from Tablesのステップ1
  4. Next」をクリックして、永続性ユニットの定義をスキップします。

  5. Type of Connectionページで「Online Database Connection」オプションを選択します。「Next」をクリックします。

    Create Entities from Tablesのステップ3
  6. Database Connection Detailsページで、「AddボタンCreateボタンをクリックして、新しい接続を作成します。

    Create Entities from Tablesのステップ4でデータベース接続を定義
  7. 次の値を入力して、HRスキーマに対するデータベース接続を作成します。ここに例として示した値は、使用環境に合わせて変更する必要があります。

    オプション
    Connection Name HR
    Username/Password hr/<使用しているhrパスワード>
    Save Password チェック・ボックスを選択
    Driver Thin
    Host Name スキーマがインストールされているマシン(例:localhost)
    SID

    HRスキーマがインストールされているデータベース(XE、orclなど)

  8. Test Connection」をクリックして、接続可能であることを確認します。

    Create Database Connectionダイアログ

    接続に成功したら、「OK」をクリックします。

    接続に失敗した場合、正しいパラメータを入力しており、Oracleデータベースとリスナー・サービスが実行中であることを確認します。
    接続は、Initialize Business Components Projectページにも表示されます。
  9. Database Connection Detailsページに戻り、「Next」をクリックします。

    Create Entities from Tablesのステップ4
  10. Select Tablesページで「Query」をクリックし、HRスキーマに使用可能なオブジェクトを取得します。次に、「DEPARTMENTS」と「EMPLOYEES」を選択し、右矢印ボタン右矢印ボタンを使用してそれらをSelectedペインに移動します。

    Create Entities from Tablesのステップ5

    Next」をクリックします。

  11. このステップでは、パッケージ名がoracle.modelであることを確認します。

    Create Entities from Tablesのステップ6
  12. Next」に続き、「Finish」をクリックします。

  13. アプリケーション・ナビゲータには、DepartmentsEmployeesに1つずつjavaクラス・ファイルが作成されています。

    アプリケーション・ナビゲータ
  14. Save AllボタンSave Allアイコンをクリックして作業内容を保存します。

ステップ3:EJBダイアグラムの作成

EJBダイアグラムは、エンティティやJava Bean、およびこれらのコンポーネント間の関係を作成し、表示します。EJBダイアグラムを作成するには、以下の手順を実行します。

  1. アプリケーション・ナビゲータで「Model」ノードを右クリックし、「New」→「From Gallery」を選択します。

    コンテキスト・メニューのNewオプション
  2. New Galleryで、カテゴリとして「Business Tier」→「EJB」を選択し、「EJB Diagram (JPA/EPA 3.x)」項目をダブルクリックします。

    New Gallery
  3. OK」をクリックします。

  4. Create EJB Diagramダイアログで、ダイアグラム(EJB Diagram1)用のデフォルト名をHR EJB Diagramに変更し、デフォルト・パッケージ名がoracle.modelであることを確認します。

     Create EJB Diagramダイアログ
  5. OK」をクリックします。

  6. Associate Diagram With Persistence Unitダイアログで「OK」をクリックし、提示されたPersistence Unit(Model.jpr)を受け入れます。

    Associate Diagram With Persistence Unitダイアログ
  7. ダイアグラム・エディタで新しい空のダイアグラムが開きます。

    新しい空のダイアグラム b
    ダイアグラム上でのEJB/JPAコンポーネントのモデル化は、開発者にとって便利な機能です。詳細を表示/非表示詳細表示
  8. アプリケーション・ナビゲータから「Departments」エンティティと「Employees」エンティティを選択し、ダイアグラムにドラッグします。

    ダイアグラム面へのEJBのドラッグ・アンド・ドロップ
  9. 先ほど部門表と従業員表から作成したEJBコンポーネントがダイアグラムに表示されます。必要に応じてズームインし、両方のエンティティが水平に整列するようにダイアグラムのレイアウトを変更します。エンティティ間の関係を選択し、コンテキスト・メニューからStraighten linesオプションを使用すると、ダイアグラムを整理して表示することができます。

    エンティティを配置したEJBダイアグラム
  10. Save AllボタンSave Allアイコンをクリックして作業内容を保存します。

ステップ4:ファサードBeanの作成とクライアント・アプリケーションへの公開

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

このステップでは、従業員レコードおよび部門レコードを検索するメソッドを実装したSession Beanを作成します。

  1. コンポーネント・パレットで、「EJB Components」ライブラリを選択し、「EJB Nodes」を開きます。

    コンポーネント・パレット
  2. Session BeanボタンSession Beanコンポーネントを選択し、ダイアグラムにドラッグ・アンド・ドロップします。

    Session BeanをEJBダイアグラムにドラッグ・アンド・ドロップ

    Create Session Beanウィザードが開きます(必要に応じて、Welcomeステップで「Next」をクリックします)。

  3. EJB Name and Optionsステップで、EJB NameをHRFacadeに設定し、次の値が適切に設定されていることを確認します。

    プロパティ
    EJB Name HRFacade
    Session Type Stateless
    Transaction Type Container
    Generate Session Facade Method (チェック)
    Entity Implementation JPA Entities
    Persistence Unit Model

    Create Session Beanウィザードのステップ2
  4. Next」をクリックします。

    Session Beanには、ステートフルとステートレスの2種類があります。詳細を表示/非表示 詳細表示

    ステートフルSession Beanは、クライアントの代わりに対話状態を維持します。対話状態は、Session Beanのフィールド値に加えて、Session Beanのフィールドからアクセスできるすべてのオブジェクトで定義されます。ステートフルSession Beanは永続データ・ストア内のデータを直接表すものではありませんが、クライアントに代わってこのデータにアクセスし、更新します。 ステートフルSession Beanの存続時間は通常、そのクライアントの存続時間と同じになります。

    ステートレスSession Beanは、あくまでサーバー側の動作を提供するために設計されたものです。これらにはユーザー固有のデータが含まれないため、匿名のBeanになります。EJBアーキテクチャでは、単一のステートレスSession Beanを使用して多数のクライアントのニーズを満たすための手段が提供されています。ステートレスSession Beanインスタンスは、クライアント起動メソッドで使用されている場合を除いて、すべて同等です。ステートレスという用語は、特定のクライアントに対する状態情報を保持していないことを意味します。ただし、ステートレスSession Beanは、オープン・データベース接続などのクライアントに依存しない状態を保持できます。

    セッション・ファサードとBeanによって処理されるトランザクションでは、コンテナを使用することで、プログラムによるプロセスを介して明示的にユーザー・トランザクションを管理できます。
  5. Session Facadeステップで、このプロジェクトのエンティティがすべてツリー・コントロールのノードとして表示されます。すべてのエンティティ・メソッドを含むチェック・ボックスを選択することも、各ノードを開いてメソッドのサブセットを選択することもできます。
    Employees」ノードと「Departments」ノードを開き、それぞれのエンティティに対してすべてのメソッドを選択します。

    Create Session Beanウィザードのステップ3
  6. Next」をクリックします。

  7. Class Definitionステップで、Beanクラスのフルネームがoracle.model.HRFacadeBeanであることを確認してから、「Next」をクリックします。

    Create Session Beanウィザードのステップ4
  8. 次のステップでは、リモート・インタフェースとローカル・インタフェースの実装が選択されていることを確認します。リモート・インタフェースは、Javaクライアントなどの個別の仮想マシンで実行されるクライアント・アプリケーションで使用されます。一方、ローカル・インタフェースは、Webクライアントなどの同じ仮想マシンで実行されるクライアント・アプリケーションで使用されます。

    Create Session Beanウィザードのステップ5

    Next」をクリックして、作成したクラスの内容を確認します。次に、「Finish」をクリックします。

  9. ダイアグラムは次のように表示されます。

    EJBダイアグラム
  10. アプリケーション・ナビゲータは、次のように表示されます。

    アプリケーション・ナビゲータ

    Session Beanは、3つのファイルで構成されています。Session Beanコードを含むHRFacadeBean、リモート・クライアントのBean機能を表すHRFacade、およびローカル・クライアントの機能を表すHRFacadeLocalです。

  11. Save AllアイコンSave Allアイコンをクリックして作業内容を保存します。

ステップ5:EJB Session BeanからのADFデータ・コントロールの作成

Oracle ADFフレームワークのデータ・コントロールとしてEJBを公開します。これによって、ユーザー・インタフェースをEJBにバインドする方法が簡素化されます。ADFフレームワークの詳細は、次のWebサイトを参照してください。http://oracle.com/technology/products/adf

EJB Session BeanからADFデータ・コントロールを作成するには、次の手順を実行します。

  1. アプリケーション・ナビゲータで「HRFacadeBean.java」ノードを右クリックし、コンテキスト・メニューから「Create Data Control」を選択します。

    コンテキスト・メニュー
  2. ウィザードのステップ1で、デフォルトの名前(HRFacadeBean)を受け入れて「Next」をクリックします。

  3. Session EJB Business Interfaceページで、「Local」を選択し、「Finish」をクリックします。

    Choose EJB Interfaceダイアログ

    Save AllアイコンSave Allアイコンをクリックして作業内容を保存します。

  4. アプリケーション・ナビゲータは、次のように表示されます。

    アプリケーション・ナビゲータ

    データ・コントロールを作成すると、プロジェクトにさまざまな変更が追加されます。EJB Session Beanに基づくデータ・コントロールを作成すると、JDeveloperによってデータ・コントロール定義ファイル(DataControls.dcx)が作成され、概要エディタ内でこのファイルが開かれ、Data Controlsパネルにファイル階層が表示されます。このファイルを使用することで、データ・コントロールはサービスやバインディングと直接連携することができます。

  5. Data Controls」アコーディオンを開き、UIから使用できるようになった作成済みのコンポーネントを確認します。

    Data Controlsペイン
  6. 利用可能なデータ・コントロールがData Control Registryに表示されることに注意してください。

    Data Control Registry
  7. HRFacadeLocal」ノードを展開します。「departmentsFindAll」ノードを選択すると、右側にデータ・コントロールの詳細が表示されます。

    Data Control Registry

    DataControls.dcxファイルの概要エディタに、データ・モデルのマスター・ディテール階層ビューと、セッション・ファサードのメソッドが表示されます。
    ノードを選択すると、該当するエンティティ・クラスのBeanプロパティがAttributesタブに表示されます。Accessorsタブには、該当するエンティティ・クラスに含まれ、コレクションを返す、すべてのBeanプロパティが表示されます。またOperationsタブでは、このエンティティ上で実行されるセッション・ファサードのその他のメソッドを確認できます。

  8. Model」プロジェクト・ノードを閉じ、いずれかのタブを右クリックして、開いているタブをすべて閉じます。

    コンテキスト・メニュー
ステップ6:UIヒントと検証規則の追加

ADFモデルでは、検証や一貫性のあるUIコントロールをアプリケーションに対して宣言的に追加できます。データ・コントロールを作成した後は、そのデータ・コントロールの表示特性や検証特性について詳細なレベルで制御できます。

次の手順では、Employeesデータ・コントロールの複数の属性のラベルと1つの検証規則を設定します。

  1. Data Controlパレットで、「departmentsFindAll」を右クリックし、「Edit Definition」を選択します。

    コンテキスト・メニュー
  2. Attributes」ノードを選択します。

    コンテキスト・メニュー
  3. 属性リストの「departmentId」を選択し、「UI Hints」タブをクリックします。

    Choose EJB Interfaceダイアログ
  4. departmentId属性のLabelプロパティにDepartment Idと入力します。

    アプリケーション・ナビゲータ
  5. departmentNameとlocationIdに対して前の手順を繰り返します。departmentNameラベルはDepartment Nameに、locationIdラベルはLocation IDに設定します。

  6. 次に、Employeesデータ・コントロールに検証を追加します。

  7. Data Controlパレットで、「employeesFindAll」を右クリックし、「Edit Definition」を選択します。

    Data Control Registry
  8. 属性リストの「salary」を選択し、「Validation Rules」タブをクリックします。

    Data Control Registry
  9. Validation Rulesペインの右側にある緑のプラス記号「Addボタン」をクリックします。

    Data Control Registry
  10. Add Validation Rule for: salaryダイアログで、次の値を入力します。

    オプション
    Description Salary between 100 and 15000
    Type Range
    Operator Between
    Minimum Value 100
    Maximum Value 15000

    Data Control Registry
  11. Failure Handling」タブをクリックし、Message Text として"Salary amount must be between 100 and 15000."と入力します。OK」をクリックして、検証規則を作成します。

    Data Control Registry
  12. Employeesデータ・コントロールの定義は、この時点で次のように表示されます。

    Data Control Registry

  13. 変更を保存します。

  14. これで、UIヒントと検証規則を追加したモデルの作成が完了しました。UIヒントは、部門データ・コントロールを使用するあらゆる新規ページで使用されます。また、salary検証規則は、給料を使用するあらゆるページに適用されます。

ブックマーク 印刷 すべて表示 | すべて非表示
トップへ戻る
Copyright c 2013, Oracle and/or its affiliates.All rights reserved.