手順 6. O/R マッピングを生成する

Workshop は、Hibernate のような一般的な永続性サービスを利用するための、多彩で柔軟性のあるオブジェクト リレーショナル マッピング インタフェースを備えています。O/R マッピングは、開発手法に応じて以下の異なるメカニズムで生成できます。

この手順では、両方のシナリオに従って O/R マッピングを生成します。この手順のタスクは以下のとおりです。

データベース スキーマからオブジェクト モデルとマッピング ファイルを作成する

この手順では、データベース スキーマをリバースエンジニアリングする方法によって、関連するオブジェクト モデルとマッピングを Workshop で自動生成します。

  1. [DbXplorer] ビュー内の空白部分で右クリックし、[Hibernate マッピングの生成...] を選択します。

  2. [Web アプリケーション] ダイアログで workshop-hibernate-tutorial を選択し、[OK] をクリックします。

  3. 以下に示す [Hibernate ORM の生成] ダイアログで、データベース テーブルを選択して、[次へ] をクリックします。

    CONTACT データベース テーブルは選択しないでください。トップダウンの開発手法を理解できるように、このチュートリアルの後半で、CONTACT データベースを使用して Contact オブジェクト モデルから Hibernate マッピング ファイルを生成します。

  4. [テーブルの関連付け] ダイアログに、外部キー定義に基づいてデータベース スキーマから抽出されたエンティティ関係が表示されます。このダイアログでは、各テーブルの関連を選択し、編集パネルでオプションを変更することでそれらを編集できます。

    LINEITEM と ORDER_DATA の間の関連を選択します。
    1 番目の [プロパティ] フィールドの値を、「orderData」から「order」に変更します。

  5. LINEITEM と PRODUCT の間の関連を選択します。
    [Generate a reference to a collection of Lineitem in Product] チェックボックスの選択を解除します。(LINEITEM と PRODUCT の間に、多対 1 の一方向の関係を定義する必要があるためです。)

  6. ORDER_DATA と CUSTOMER の間の関連付けを選択します。
    2 番目の [プロパティ] フィールドの値を orderData から orders に変更します。
    [次へ] はクリックしないでください

CUSTOMER と CUSTOMERID の間に 1 対 1 の関連付けを新しく作成する

Workshop では、新しい関連付けを作成することもできます。2 つのテーブル間の単純な関連付け (1 対 1、1 対多、多対 1) と、中間テーブルを介した多対多の関連付けを作成できます。


  1. [新しい関連付けの作成] オプションをクリックし、新しい関連付けのプロパティを指定します。

  2. [新しい関連付けの作成] ダイアログで、[Table 1] ドロップダウンを使用して、[CUSTOMER] を選択します。
    [Table 2] ドロップダウンを使用して、[CUSTOMERID] を選択します。
    [次へ] をクリックします。

  3. [結合カラム] ダイアログで、テーブル間の結合カラムを指定します。
    [CUSTOMER] テーブル ドロップダウンで、[CUSTOMERID] カラムを選択します。
    [CUSTOMERID] テーブル ドロップダウンで、[CUSTOMERID] カラムを選択します。
    [次へ] をクリックします。

  4. [1 対 1] を選択して、1 人の顧客と 1 つの顧客 ID が対応するようにします。
    [完了] をクリックします。

  5. 新しい関連付け (茶色のボックス) はデータベース スキーマから抽出されたものではないため、Hibernate マッピング ファイルおよびオブジェクト モデル内にプログラムによって作成されます。

    [Hibernate ORM の生成] ダイアログで [次へ] をクリックします。

  6. [デフォルト テーブルの生成] ダイアログの [キー ジェネレータ] ドロップダウンで、[increment] を選択します。
  7. [Java パッケージ] フィールドの横にある [参照] をクリックします。
    [Java パッケージの選択] ダイアログで、[新しい Java パッケージ] をクリックします。
    [新しい Java パッケージ] ダイアログの [名前] フィールドに com.bea.beans と入力して [終了] をクリックします。

    alt
  8. [Java パッケージの選択] ダイアログで、[OK] をクリックします。
  9. [Hibernate ORM の生成] ダイアログで、[次へ] をクリックします。

  10. [テーブルとカラム] ダイアログで、生成されるマッピング ファイルと Bean クラスのテーブル マッピング名およびカラム マッピング名を定義します。デフォルトでは、Hibernate マッピング ファイルと JavaBean に、スキーマのテーブル名およびカラム名が使用されます。テーブルまたはカラムをポイントすると、データベース スキーマに定義されているテーブルおよびカラムのプロパティがツールチップに表示されます。

    [次へ] をクリックします。

  11. [マッピングの生成] ダイアログでは、マッピング ファイルの拡張子を選択できます。ドメイン Java クラスを生成するかどうかや、Hibernate コンフィグレーション ファイル hibernate.cfg.xml を更新するかどうかも指定できます。

    デフォルトを受け入れて [完了] をクリックします。


  12. ORM 生成ウィザードで指定したプロパティに基づいて、すべての Hibernate マッピング ファイルと JavaBean が生成されます。

    生成が完了すると、[AppXplorer] ビューを使用し、そのプロジェクトの [Hibernate コンフィグレーション] ブランチにある web (Web アプリケーション ルート) ディレクトリ内にエンティティが表示されます。

    [Hibernate ORM の生成] ウィザードで指定したすべての設定は記録されており、次回同じデータベース接続でこのウィザードを使用するときに再利用できます。

Spring Bean を生成する

この時点で、必要に応じて Spring Bean と Spring コンフィグレーションを生成することができます。

このタスクには以下の作業があります。



生成したマッピングとクラスを確認する

  1. [AppXplorer] ビューで、[workshop-hibernate-tutorial|web|Hibernate コンフィグレーション|エンティティ] ノードを開きます。
  2. Workshop によって生成された一連の永続性エンティティを確認します。永続性エンティティは、hibernate.cfg.xml ファイルで指定された、拡張子 .hbm.xml を持つマッピング リソースに基づいて識別されます。
  3. オブジェクト モデルは、パッケージの [web/WEB-INF/src/java] ブランチに表示されます。


永続性クラスから Hibernate マッピング ファイルを作成する

この手順では、永続性 Java クラス Contact を作成し、Workshop を使用して、Contact オブジェクトの Hibernate マッピングを生成します。これにより、トップダウンの開発手法に従って作業を進めます。

  1. [AppXplorer] ビューで [workshop-hibernate-tutorial|web/WEB-INF/src/java|com.bea.beans] ノードを開きます。
  2. [com.bea.beans] を右クリックして [新規|クラス] を選択します。
  3. [新規 Java クラス] ダイアログで、java.io.Serializable インタフェースを実装する Java クラス Contact を作成します。([追加] をクリックして、java.io.Serializable インタフェースを追加します)。

  4. Contact クラスに以下のプライベート変数 (String 型) を追加します。注意 : ここでは、CONTACT データベース テーブル内のカラムにマップするプロパティを定義しています。
    private String contactId;
    private String address;
    private String city;
    private String phone;
  5. 引数なしのコンストラクタを追加します。
    public Contact( ) {
      super( );
    }
  6. ソース ペイン内で右クリックし、[ソース|Getter および Setter の生成] を選択して、各プロパティのゲッター メソッドとセッター メソッドを追加します。[Getter および Setter の生成] ダイアログで、[すべて選択] をクリックして [OK] をクリックします。
  7. 以下のプロパティを追加します。

    private static final long serialVersionUID = 1L;
  8. Set 内の Contact インスタンスを使用するために、equals( ) メソッドと hashCode( ) メソッドを追加します。
    public boolean equals(Object other) {
      if ( (this == other ) ) return true;
      if ( !(other instanceof Contact) ) return false;
      Contact castOther = (Contact) other;
      if( this.getContactId( ).equals(castOther.getContactId( )) ) {
        return true;
      } else {
        return false;
      }
    }

    public int hashCode() {
       return this.getContactId( ).hashCode( );
    }
  9. Contact クラスを保存します。これで、CONTACT 永続性データのオブジェクト表現が作成できました。次に、Contact オブジェクトから Hibernate O/R マッピング ファイルを作成します。
  10. [AppXplorer] ビューで、workshop-hibernate-tutorial プロジェクトを右クリックして、[新規|その他] を選択します。[Hibernate] を展開し、[Java クラスからの Hibernate マッピング] を選択して [次へ] をクリックします。

  11. Java クラスの [参照] ボタンをクリックします。
    [Choose Type] ダイアログで、Contact と入力し、com.bea.beans.Contact オブジェクトを選択して、[OK] をクリックします。

  12. [Hibernate マッピングの生成.] ダイアログで、[次へ] をクリックします。

  13. [クラス マッピングのプロパティ] ダイアログで、[次へ] をクリックします。


  14. [Bean プロパティのマッピング] ダイアログでは、どの Bean プロパティをマッピングするかを選択できます。必要に応じて、プロパティを選択し、[編集] をクリックしてカラム マッピング情報を指定するか、[削除] ボタンをクリックして Hibernate マッピング ファイルからプロパティのマッピングを削除します。このチュートリアルでは、マッピング情報を変更する必要はありません。
  15. [終了] をクリックします。

  16. Workshop により、Contact オブジェクトの情報に基づいて Hibernate O/R マッピングが生成され、CONTACT データベース テーブルにマッピングされます。

チュートリアルを移動するには、矢印をクリックしてください。


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