Hibernate のSetコレクション・マッピング
2008/07/24 14:55Update
Hibernate のSetコレクション・マッピング方法について学びます。
Hibernateコレクション・マッピングの詳細について、公式のリファレンス
をご参照ください。
サンプルから説明します。
◇ USER(ID, NAME)
◇ ADDRESS(ID, ADDR_NAME, USER_ID)
ADDRESSのUSER_IDはforeignキーで、ADDRESS.USER_ID = USER.IDとします。
即ち、テーブルUSERはADDRESSと1対多の関係で、HibernateのSetコレクションを用いるマッピング方法は次の通りです。
User.java
User.hbm.xml
※<one-to-many class="..." />でSetの要素の型を指定します。
ここでは、entity.Addressクラスという型を指定していますが、elementによるテーブルのフィールドを指定することもできます。
さらに、composite-elementによる次のような複雑な設定もできます。
をご参照ください。サンプルから説明します。
テーブル
◇ USER(ID, NAME)
◇ ADDRESS(ID, ADDR_NAME, USER_ID)
ADDRESSのUSER_IDはforeignキーで、ADDRESS.USER_ID = USER.IDとします。
即ち、テーブルUSERはADDRESSと1対多の関係で、HibernateのSetコレクションを用いるマッピング方法は次の通りです。
Hibernateエンティティ
User.javapublic class User implements java.io.Serializable {
// Fields
private String id;
private String name;
private java.util.Set addressSet;
// setter/getter
...
}
Hibernateマッピング・設定
User.hbm.xml<hibernate-mapping> <class name="entity.User" table="USER"> <id name="id" type="string" column="ID" length="32"> <generator class="uuid.hex" /> </id> <property name="name" column="NAME" type="string" not-null="true" length="100" /> <set name="addressSet" table="ADDRESS"> <key column="USER_ID"></key> <one-to-many class="entity.Address" /> </set> </class> </hibernate-mapping>
※<one-to-many class="..." />でSetの要素の型を指定します。
ここでは、entity.Addressクラスという型を指定していますが、elementによるテーブルのフィールドを指定することもできます。
<set name="addressNameSet" table="ADDRESS"> <key column="USER_ID"></key> <element type="string" column="ADDR_NAME" not-null="true"/> </set>
さらに、composite-elementによる次のような複雑な設定もできます。
<set name="addressNameSet" table="ADDRESS"> <key column="USER_ID"></key> <composite-element class="entity.Address"> <property name="id"/> <property name="addrName"/> </composite-element> </set>
HibernateのSetコレクション・マッピングの使用例
User user = ...;//session.get(User.class, id);
Set<Address> addressSet = user.getAddressSet();
for (Address address : addressSet) {
System.out.println(address.getAddrName());
}
Sponsored Link
- Relative Articles
- Hibernate設定ファイルその1 - hibernate.cfg.xml - (2008/07/09 14:08)
- Hibernate c3p0 - よく利用されているコネクションプーリング - (2008/07/09 15:00)
- Hibernate 方言(Dialect)一覧 - (2008/07/09 15:10)
- Hibernate のSessionとSessionFactory - (2008/07/09 15:51)
- ThreadLocal でHibernate Session を効率的に管理する - (2008/07/09 18:43)
- Hibernateで複数のDBに接続するには? - (2008/07/09 18:47)
- Hibernateとは - (2008/07/11 14:23)
- Hibernate のインストール - (2008/07/24 11:01)
- Hibernate の開発手順 - (2008/07/24 12:44)
- Hibernate SQLをログに出力方法 - (2008/07/30 16:06)