1、 OnetoOne模型
对1的关系在现实中很常见。比方说:人和身份证。1个身份证对应着一个身份证,一个身份证对应着一个人。那么,我们就以此为原型。进行代码编写。
建立实体模型如右:
2、 创建数据库
根据模型,创建数据库:
use HibernateQuickUse;
drop table if exists Person;
drop table if exists Card;
create table Card (
id varchar(32) primary key,
cardDesc varchar(128) not null
);
create table Person (
id varchar(32) primary key,
name varchar(32) not null,
card_id varchar(32) not null,
foreign key(card_id) references Card(id)
);
java代码如下:
3、 Person类
package org.py.hib.relation.one2one;
@SuppressWarnings("serial")
public class Person implements java.io.Serializable
{
private String id;
private String name;
private Card card;
public Person()
{
}
public String getId()
{
return this.id;
}
public void setId(String id)
{
this.id = id;
}
public Card getCard()
{
return this.card;
}
public void setCard(Card card)
{
this.card = card;
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
}
4、 Card类
package org.py.hib.relation.one2one;
@SuppressWarnings("serial")
public class Card implements java.io.Serializable
{
private String id;
private String cardDesc;
public Card()
{
}
public String getId()
{
return this.id;
}
public void setId(String id)
{
this.id = id;
}
public String getCardDesc()
{
return cardDesc;
}
public void setCardDesc(String cardDesc)
{
this.cardDesc = cardDesc;
}
}
5、 数据库文件hibernate.cfg.xml
同上一实例
6、 xml映射文件Person.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.py.hib.relation.one2one.Person" table="person">
<id name="id" type="java.lang.String" column="id" length="32">
<generator class="uuid" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="32" />
</property>
<many-to-one name="card" class="org.py.hib.relation.one2one.Card" unique="true"
cascade="all" column="card_id" />
</class>
</hibernate-mapping>
今天讲的是one-to-one配置。但是,此处用的是many-to-one,这个是什么原因呢?其实,one-to-one就是特殊的many-to-one。
7、 Card.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.py.hib.relation.one2one.Card" table="card">
<id name="id" type="java.lang.String" column="id" length="32">
<generator class="uuid" />
</id>
<property name="cardDesc" type="java.lang.String" column="cardDesc" length="128" not-null="true"/>
</class>
</hibernate-mapping>