Hibernate による O/R マッピング(その 2)

永続化クラスとマッピングファイルの作成

まずは永続化クラスを作成します。普通の JavaBeans の作り方と同じです。

package jp.mydns.akanekodou.model;

import java.io.Serializable;

public class Customer implements Serializable {
    private static final long serialVersionUID = 1L;

    private int id;
    private String name;
    private String phone;

    public Customer() {
        name = "";
        phone = "";
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}
package jp.mydns.akanekodou.model;

import java.io.Serializable;

public class Product implements Serializable {
    private static final long serialVersionUID = 1L;

    private int id;
    private String name;
    private String groupName;
    private Integer purchasePrice;
    private Integer wholesalePrice;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public Integer getPurchasePrice() {
        return purchasePrice;
    }

    public void setPurchasePrice(Integer purchasePrice) {
        this.purchasePrice = purchasePrice;
    }

    public Integer getWholesalePrice() {
        return wholesalePrice;
    }

    public void setWholesalePrice(Integer wholesalePrice) {
        this.wholesalePrice = wholesalePrice;
    }
}

この永続化クラスを元にしてマッピングファイルを自動生成→修正し、src フォルダの直下に hibernate.hbm.xml として保存します。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="jp.mydns.akanekodou.model.Customer" table="顧客マスタ">
    <id name="id" type="integer">
      <column name="顧客ID" />
      <generator class="assigned" />
    </id>
    <property name="name" type="string" column="顧客名" />
    <property name="phone" type="string" column="連絡先" />
  </class>
  <class name="jp.mydns.akanekodou.model.Product" table="商品マスタ">
    <id name="id" type="integer">
      <column name="商品ID" />
      <generator class="assigned" />
    </id>
    <property name="name" type="string" column="商品名" />
    <property name="groupName" type="string" column="グループ名" />
    <property name="purchasePrice" type="integer" column="仕入単価" />
    <property name="wholesalePrice" type="integer" column="卸単価" />
  </class>
</hibernate-mapping>

2013/05/12 追記 : 仕入単価と卸単価について、元となるテーブルに null 値が含まれているため、int 型だとエラー(プリミティブ変数には null は代入できないため)になります。これを回避するためラッパークラスである Integer 型に型を変更してあります。

2013/05/13 追記 : hibernate-mapping 要素には複数の class 要素が書けるということで二つのファイルを一つにまとめました。