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)