Hibernateコンポーネントのマッピングの例
Hibernateコンポーネントは、エンティティ(テーブル)ではなく、値またはプロパティのグループとして表されます。 Hibernateでコンポーネントがどのように機能するかを理解するには、次のチュートリアルを参照してください。
1. 顧客テーブル
以下の顧客表を参照してください。

顧客テーブル、MySQLデータベースのSQLスクリプト。
CREATE TABLE `customer` ( `CUST_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `CUST_NAME` varchar(10) NOT NULL, `AGE` int(10) unsigned NOT NULL, `ADDRESS1` varchar(255) NOT NULL, `ADDRESS2` varchar(255) NOT NULL, `ADDRESS3` varchar(255) NOT NULL, `CREATED_DATE` date NOT NULL, `CREATED_BY` varchar(10) NOT NULL, PRIMARY KEY (`CUST_ID`) USING BTREE );
2. モデルクラス
次に、上記の「customer」テーブルを表す2つのモデルクラスCustomer.javaとAddress.javaを作成します。
ファイル:Customer.java
package com.example.customer;
import java.util.Date;
public class Customer implements java.io.Serializable {
private Integer custId;
private String custName;
private int age;
private Address address;
private Date createdDate;
private String createdBy;
//setters and getters
}
ファイル:Address.java
package com.example.customer;
public class Address implements java.io.Serializable {
private String address1;
private String address2;
private String address3;
//setters and getters
}
この場合、Address.javaは「component」であり、Customer.javaの「Address1」、「Address2」、および「Address3」列を表します。
3. コンポーネントマッピング
これで、次のようにコンポーネントマッピングを宣言できます。
ファイル:Customer.hbm.xml
4. それを実行します
Addressオブジェクトを作成し、Customerオブジェクトに含めて永続化します。
package com.example;
import java.util.Date;
import org.hibernate.Session;
import com.example.customer.Address;
import com.example.customer.Customer;
import com.example.util.HibernateUtil;
public class App {
public static void main(String[] args) {
System.out.println("Hibernate component mapping");
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Address address = new Address();
address.setAddress1("Address 1");
address.setAddress2("Address 2");
address.setAddress3("Address 3");
Customer cust = new Customer();
cust.setCustName("example");
cust.setAge(30);
cust.setAddress(address);
cust.setCreatedDate(new Date());
cust.setCreatedBy("system");
session.save(cust);
session.getTransaction().commit();
System.out.println("Done");
}
}
出力…
Hibernate component mapping
Hibernate:
insert
into
exampledb.customer
(CUST_NAME, AGE, ADDRESS1, ADDRESS2, ADDRESS3, CREATED_DATE, CREATED_BY)
values
(?, ?, ?, ?, ?, ?, ?)
Done
ダウンロード–Hibernate-Component-Mapping-Example.zip(10KB)