Hibernateコンポーネントマッピングの例

Hibernateコンポーネントのマッピングの例

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

1. 顧客テーブル

以下の顧客表を参照してください。

customer table

顧客テーブル、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.javaAddress.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)