前 次 前/次ボタンと目次ボタンとの区切り線

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

BEA Workshop ORM Workbench は、Hibernate などの広く使われている永続性サービスを利用するための、強力で柔軟なオブジェクト リレーショナル マッピング インタフェースを備えています。OR マッピングは、開発手法に応じて以下の異なるメカニズムで生成できます。

この手順では、2 つの方法による O/R マッピングの生成を両方とも説明します。

6.1. [Hibernate ORM の生成] ウィザードを使用して Hibernate O/R マッピング ファイル (.hbm.xml) とオブジェクト モデルを作成する

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

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

  1. [DbXplorer] で、データベース接続 SalesDBConnection を右クリックし、[Hibernate マッピングの生成] を選択します。

  2. [Web アプリケーション] ダイアログで、Hibernate Web アプリケーション プロジェクトの Workshop-Hibernate-Tutorial を選択します。Workshop では、Eclipse ソース フォルダのルート レベルにコンフィグレーション ファイル hibernate.cfg.xml が存在する場合、その Web アプリケーションは Hibernate アプリケーションであると見なされます。同じように、persistence.xml ファイルがある場合は EJB3 永続性 Web アプリケーションと見なされます。

  3. [OK] をクリックします。
  4. 以下に示す [Hibernate ORM の生成] ダイアログで、データベース テーブルを選択します。ただし、この段階では CONTACT データベース テーブルを選択しません。Contact オブジェクト モデルから Hibernate マッピング ファイルを生成することで、トップダウンの開発アプローチを採用します。

    注意 : [ドライバのコピーとクラスパスへの追加] オプションを使用すると、Project ビルド パスを更新して JDBC ドライバ ファイルを追加できます。

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

  7. LINEITEM と ORDER_DATA の間の関連付けを選択します。LineItemOrderData への参照を生成するオプションのプロパティを、「orderData」から「order」に変更します。

  8. LINEITEM と PRODUCT の間の関連付けを選択します。LINEITEM と PRODUCT の間には、多対 1 の一方向の関係を定義する必要があります。そのため、ProductLineItems のセットへの参照を生成するオプションのチェックボックスを選択解除します。

  9. ORDER_DATA と CUSTOMER の間の関連付けを選択します。CustomerOrderData への参照を生成するオプションのプロパティを、「orderDatas」から「orders」に変更します。

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

  1. Workshop では、新しい関連を作成することもできます。2 つのテーブル間の単純な関連付け (1 対 1、1 対多、多対 1) と、中間テーブルを介した多対多の関連付けを作成できます。[新しい関連付けの作成] オプションをクリックし、新しい関連のプロパティを指定します。

  2. CUSTOMER と CUSTOMERID の間には、単純な 1 対 1 の関係を定義する必要があります。[新しい関連付けの作成] ダイアログで、以下のように CUSTOMER テーブルと CUSTOMERID テーブルを選択し、[次へ] をクリックします。

  3. CUSTOMER テーブルの CUSTOMERID カラムと、CUSTOMERID テーブルの CUSTOMERID カラムを選択し、テーブル間の結合カラムを指定して、[次へ] をクリックします。

  4. [1 対 1] ラジオ オプションを選択して、1 件の顧客と 1 件の顧客 ID が対応するようにします。

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

  6. [Hibernate ORM の生成] ダイアログで、[次へ] をクリックします。
  7. [デフォルト テーブルの生成] ダイアログで、キー生成方法として [increment] を選択します。

  8. オブジェクト モデル クラスを生成するには Java パッケージが必要です。そのため、[Java パッケージ] の [参照...] ボタンをクリックし、[Java パッケージの選択] ダイアログを使用して新しい Java パッケージ com.bea.beans を作成します。

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



    テーブルとカラムのマッピング生成を以下のとおりカスタマイズします。

  11. [次へ] をクリックします。
  12. [マッピングの生成] ダイアログで、生成の対象とするアーティファクトを選択します。

  13. [完了] をクリックします。
  14. [Hibernate ORM の生成] ウィザードで指定したプロパティに基づいて、すべての Hibernate マッピング ファイルと JavaBean が生成されます。
  15. 生成が完了すると、[AppXplorer] を使用し、そのプロジェクトの [Hibernate コンフィグレーション] ブランチにある web (Web アプリケーション ルート) 内にエンティティが表示されます。
  16. なお、[Hibernate ORM の生成] ウィザードで指定したすべての設定は記録されており、次回同じデータベース接続でこのウィザードを使用するときに再利用できます。

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

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

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

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

  1. パッケージ com.bea.beans 内に、java.io.Serializable インタフェースを実装する Java クラス Contact を作成します。

  2. Contact クラスに、String 型のプライベート変数を以下のとおり追加します。注意 : これは、CONTACT データベース テーブルのカラムにマッピングされるプロパティを定義するための作業です。
    private String contactId;
    private String address;
    private String city;
    private String phone;
  3. 引数なしのコンストラクタを追加します。
    public Contact( ) {
      super( );
    }
  4. 各プロパティのゲッター メソッドとセッター メソッドを追加します。
  5. 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( );
    }
  6. Contact クラスを保存します。以上で、CONTACT 永続性データのオブジェクト表現を作成できました。次に、Contact オブジェクトから Hibernate O/R マッピング ファイルを作成します。
  7. [AppXplorer] ビューで、Workshop-Hibernate-Tutorial プロジェクトをクリックします。[ファイル新規その他] を選択します。[Hibernate] を展開し、[Java クラスからの Hibernate マッピング] を選択して [次へ] をクリックします。

  8. [Java クラス] の [参照...] ボタンをクリックし、マッピングの対象として com.bea.beans.Contact オブジェクトを選択します。

  9. 自動生成されるマッピング ファイルの名前を確認して、[OK] をクリックします。[次へ] をクリックします。

  10. [クラス マッピングのプロパティ] ダイアログで、マッピング データベース テーブルとして CONTACT テーブルを選択し、主キーのプロパティとして Java プロパティ contactId を選択します。[次へ] をクリックします。

  11. [Bean プロパティのマッピング] ダイアログでは、どの Bean プロパティをマッピングするかを選択できます。必要に応じて、プロパティを選択し、[編集...] をクリックしてカラム マッピング情報を指定するか、[削除] ボタンをクリックして Hibernate マッピング ファイルからプロパティのマッピングを削除します。この例では、マッピング情報を変更する必要はありません。
  12. [完了] をクリックします。
  13. Workshop により、Contact オブジェクトの情報に基づいて Hibernate O/R マッピングが生成され、CONTACT データベース テーブルがマッピングされます。

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

 

ナビゲーションをスキップ バー   ページの先頭