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
要素が書けるということで二つのファイルを一つにまとめました。