隨筆-8  評論-19  文章-2  trackbacks-0

          ?????? hibernate中一對一的關聯有兩種方式:
          ????? 主鍵關聯
          ????? 唯一外鍵關聯

          ??? 下面以一個人只能有一個身份證,一張身份證只能屬于一個人為例,分別說明這兩種的關聯方式。

          ???1)主鍵關聯方式
          ??? 主鍵關聯不需要額外的表字段;如果兩行是通過這種一對一關系相關聯的,那么這兩行就共享同樣的主關鍵字值。
          ?? Person.hbm.xml

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          ?"<hibernate-mapping>
          ?<class name="org.example.bean.Person" table="TPERSON">
          ??<id name="id" column="PERSON_ID">
          ???<generator class="increment"/>
          ??</id>
          ??<property name="age"/>
          ??<property name="firstname"/>
          ??<property name="lastname"/>

          ??<one-to-one name="card" class="org.example.bean.PersonCard"
          ???cascade="all" />
          ?</class>
          </hibernate-mapping>


          ?? 對應的類:Person.java

          public class Person implements Serializable {

          ?private long id;

          ?private long age;

          ?private String firstname;

          ?private String lastname;

          ?private PersonCard card;
          }


          ???PersonCard.hbm.xml

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          ?"
          <hibernate-mapping>
          ?<class name="org.example.bean.PersonCard" table="TPERSONCARD">
          ??<id name="id" column="ID">
          ???<generator class="increment"/>
          ??</id>
          ??<property name="cardID"/>
          ??<property name="beginDate"/>
          ??<property name="endDate"/>

          ??<one-to-one name="person" class="org.example.bean.Person" constrained="true"/>
          ?</class>
          </hibernate-mapping>

          ?? 對應的類:PersonCard.java
          public class PersonCard {

          ?private long id;

          ?private String cardID;

          ?private String beginDate;

          ?private String endDate;

          ?private Person person;
          }


          ?? 2)唯一外鍵關聯
          ?? 唯一外鍵關聯主要是一個外鍵和一個惟一關鍵字對應。
          ?? 下面是修改后的配置文件和對應的類。
          ?? Person.hbm.xml

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          ?"
          <hibernate-mapping>
          ?<class name="org.example.bean.Person" table="TPERSON">
          ??<id name="id" column="PERSON_ID">
          ???<generator class="increment"/>
          ??</id>
          ??<property name="age"/>
          ??<property name="firstname"/>
          ??<property name="lastname"/>
          ??<!-- one-to-one
          ???one person to one personcard
          ???-->
          ??<one-to-one name="card" class="org.example.bean.PersonCard"
          ???cascade="all-delete-orphan" property-ref="person" />
          ?</class>
          </hibernate-mapping>

          ?? 對應的類:Person.java
          public class Person implements Serializable {

          ?private long id;

          ?private long age;

          ?private String firstname;

          ?private String lastname;

          ?private PersonCard card;
          }

          ?? PersonCard.hbm.xml
          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          ?"
          <hibernate-mapping>
          ?<class name="org.example.bean.PersonCard" table="TPERSONCARD">
          ??<id name="id" column="ID">
          ???<generator class="increment"/>
          ??</id>
          ??<property name="cardID"/>
          ??<property name="beginDate"/>
          ??<property name="endDate"/>
          ??<!--
          ???one personCard to one person
          ???-->
          ??<many-to-one name="person" class="org.example.bean.Person"
          ???unique="true" not-null="true" >
          ???<column name="PERSON_ID" />
          ??</many-to-one>
          ?</class>
          </hibernate-mapping>

          ?? 對應的類:PersonCard.java
          public class PersonCard {

          ?private long id;

          ?private String cardID;

          ?private String beginDate;

          ?private String endDate;

          ?private Person person;
          }
          ???



          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 田东县| 额尔古纳市| 禄劝| 洱源县| 武义县| 纳雍县| 新营市| 铜川市| 岳阳市| 信宜市| 全州县| 疏勒县| 隆子县| 南靖县| 伊金霍洛旗| 玉龙| 洪湖市| 阿拉尔市| 云安县| 安新县| 永定县| 柞水县| 林西县| 苍梧县| 鲁甸县| 乐亭县| 抚松县| 安达市| 安溪县| 颍上县| 长寿区| 旺苍县| 蓝田县| 蓬安县| 防城港市| 炉霍县| 沂源县| 镇宁| 昭平县| 镇平县| 方山县|