JPA マッピングの生成

Workshop を使用すると、JPA 永続性レイヤを非常に簡単に作成できます。EJB3 エンティティは、以下のいずれかの方法で作成できます。

Workshop では、persistence.xml の作成とクラス ソース コードのアノテーションを手動で行うことも可能です。

作業を始めるには、JPA をサポートする Web アプリケーション プロジェクトが必要になります。また、作業の途中で行っても構いませんが、前もってデータベース接続を設定しておいたほうがよいでしょう。

JPA マッピングのスキーマからの作成

EJB3 エンティティ Bean は、既存のデータベース スキーマから作成できます。その場合は、適切なアクセサと EJB3 アノテーションで Java クラスが生成されます。作成したエンティティ Bean は、データベースと対話する永続性レイヤになります。

ここでは、employee データベースへの接続を例にとって説明します。

  1. [DbXplorer] で、エンティティ Bean の生成元となるテーブルを含むデータベースを右クリックし、[JPA マッピングの生成] をクリックします。

  2. [Web アプリケーション] ダイアログで、生成される永続性クラスの作成先となる Web アプリケーションを選択して [OK] をクリックします。

  3. [EJB3 ORM の生成] ダイアログの [データベース テーブル] で、クラスの生成元となるデータベース接続を選択します。この接続をまだ設定していない場合は、[新規] をクリックし、「データベース接続の確立」の手順に従って新しい接続を作成できます。

    接続を選択したら、スキーマを選択し (選択できるスキーマがある場合)、つづいてエンティティ Bean の生成元となるテーブルを選択します。作成した永続性レイヤを使用するコードからこのドライバを利用できるようにする場合は、[ドライバのコピーとクラスパスへの追加] チェック ボックスをチェックしたままにします。(このチェックをはずした場合は、後でプロジェクト プロパティ ダイアログを使用してドライバ ライブラリを追加できます)。なお、エンティティ Bean は、ダイアログで選択したテーブルごとに 1 つずつ生成されます。

    テーブルが選択された状態で [次へ] をクリックします。

  4. 必要に応じて、[テーブルの関連付け] でテーブル間の関連を編集します。

    このダイアログには、データベース スキーマ内の外部キーの関係に基づいて、テーブル間の関連が表示されます。緑のボックスは、エンティティの関係に変換される関連を示します。このダイアログを使用して、作成するエンティティ Bean 用に生成する関連を決定します。

  5. パフォーマンス上の理由等でデータベースに外部キー定義がない場合は、エンティティの新しい関連を作成できます。その場合は、[新しい関連付けの作成] をクリックして、ダイアログに表示されていない関連を追加します。テーブルを関連付けるための [新しい関連付けの作成] ダイアログが表示されます。

    ここでは、categories と products が関連付けられていない場合に、その関連を追加する場合の手順を示します。

    1. 関連付けるテーブルを選択して [次へ] をクリックします。

    2. 関連付けるテーブル カラムを選択して [次へ] をクリックします。

    3. 関連付けのカーディナリティを選択して [終了] をクリックします。

  6. テーブル間の関連の編集が完了したら [次へ] をクリックします。
  7. 必要に応じて、[デフォルト テーブルの生成] でプロパティを編集します。

    [Java パッケージ] ボックスには、必ず値を入力します。この値が、生成されたエンティティ Bean を格納するパッケージになります。それ以外のプロパティはすべて省略可能です。これらのクラスのパッケージをまだ作成していない場合は、ボックスの [参照] ボタンをクリックして作成できます。

    [キー ジェネレータ] ドロップダウンには、主キーの生成方法を決定する値の一覧が表示されます。選択できる値は次のとおりです。

    キー値 説明
    [auto] データベースに基づいてジェネレータを選択する。
    [identity] 新しいキーをデータベースから提供する。
    [sequence] SEQUENCE 型を使用してキーを生成する。
    [table] キーの @TableGenerator アノテーションを使用する。
    なし このフィールドを自動生成しない。

    [エンティティ アクセス] ドロップダウンには、エンティティ オブジェクト内のデータへのアクセス方法を決定する値の一覧が表示されます。選択できる値は次のとおりです。

    アクセス値 説明
    [property] Bean スタイルのセッターおよびゲッターを使用する。
    [field] 直接 Java フィールドを使用する。
  8. テーブル生成プロパティの設定が完了したら [次へ] をクリックします。
  9. [テーブルとカラム] で、テーブルおよびカラムのマッピング特性を編集します。

    スキーマ ツリー内のテーブルを選択すると、ツリーの下の領域に、そのテーブルを生成されるエンティティ Bean に変換する方法が表示されます。[テーブル マッピング] で、生成されるエンティティ Bean の特性を編集します。デフォルト値のままにしても構いません。デフォルトでは、生成されるクラス名にスキーマのテーブル名が使用されます。ツールチップに表示されているのは、データベース スキーマに定義されているテーブルおよびカラムのプロパティです。

    スキーマ ツリー内のカラムを選択すると、ツリーの下の領域に、そのカラムを生成されるエンティティ Bean のプロパティに変換する方法が表示されます。[カラム マッピング] で、生成されるエンティティ Bean のプロパティの特性を編集します。デフォルト値のままにしても構いません。

  10. 生成特性の編集が完了したら [次へ] をクリックします。
  11. [マッピングの生成] で、[EJB3 コンフィグレーション ファイルを更新] チェック ボックスがチェックされていることを確認します (このチェック ボックスはデフォルトでチェックされています)。これにより、persistence.xml ファイルが、上の手順で定義したマッピング情報を含んだ状態に更新されます。

  12. [終了] をクリックするとマッピング設定が完了し、Workshop によってエンティティ Bean が生成されます。

ORM 生成ウィザードの状態の保存

ORM エンティティ Bean を生成する前に、ORM 生成ウィザードの現在の状態を保存することができます。これにより、マッピング ウィザードを使用して、いくつかの O/R マッピングを指定した状態を保存し、後で復元して生成前にマッピングを追加することができます。ウィザードの最後のページで、[ウィザードの状態の保存] をクリックして、生成の前に現在のマッピングを保存します。

JPA の既存クラスのアノテーション

データベース スキーマを使用すると、既存の Java クラス (POJO) にアノテーションを追加して EJB3 エンティティ Bean にすることができます。その場合は、適切なアクセサに EJB3 アノテーションが追加されます。

ここでは、employee データベースへの接続を例にとって説明します。

  1. [AppXplorer] ビューで、Web プロジェクトの名前をクリックします。
  2. [ファイル] メニューから、[新規|その他] を選択し、Java 永続性 API (JPA) を展開して [アノテーション付き Java クラス] を選択し、[次へ] をクリックします。

  3. [Java クラス] で、[参照] ボタンを使用してアノテーションを追加するプロジェクト内の Java クラスを選択し、[次へ] をクリックします。

  4. [エンティティ アクセス] ドロップダウンには、エンティティ オブジェクト内のデータへのアクセス方法を決定する値の一覧が表示されます。選択できる値は次のとおりです。
  5. アクセス値 説明
    [property] Bean スタイルのセッターおよびゲッターを使用する。
    [field] 直接 Java フィールドを使用する。

    つまり、[property] を選択した場合はクラスのアクセサにアノテーションが追加され、[field] を選択した場合はクラスのフィールドにアノテーションが追加されます。

  6. [クラス マッピングのプロパティ] で、スキーマ (スキーマがある場合のみ)、テーブル、および主キー プロパティを選択して [次へ] をクリックします。

    次の図のように設定した場合、employee テーブルが上の手順で選択した sample.employeeinfo.Employee クラスにマッピングされます。また、そのクラスの employeeId フィールドは、テーブルの主キーにマッピングされます。

    [Bean プロパティのマッピング] で、データベース カラムと、アノテーションを追加する Java クラス内のフィールドとの間のマッピングを確認し、必要に応じて編集します。なお、[編集] ボタンをクリックすると、選択したプロパティ マッピングを編集するための [基本プロパティ タグ] ダイアログが表示されます。

  7. マッピングの編集が完了したら [終了] をクリックします。

    これにより、Java クラスのソース コードに EJB3 アノテーションが追加されます。これらのアノテーションによって、クラスとそのプロパティまたはフィールドが、選択したテーブルおよびカラムにマッピングされます。

関連する概念

[DbXplorer] によるデータベースの操作

JPA エンティティ マッピングの管理

JPA プロパティのコンフィグレーション


さらにヘルプが必要ですか。質問は Workshop ニュース グループまでお寄せください。