1、 OnetoOne模型

对1的关系在现实中很常见。比方说:人和身份证。1个身份证对应着一个身份证,一个身份证对应着一个人。那么,我们就以此为原型。进行代码编写。

建立实体模型如右:

Hibernate实例二:OneToOne模式

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>

没有登录不能评论