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

          ?????? hibernate中一對一的關(guān)聯(lián)有兩種方式:
          ????? 主鍵關(guān)聯(lián)
          ????? 唯一外鍵關(guān)聯(lián)

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

          ???1)主鍵關(guān)聯(lián)方式
          ??? 主鍵關(guān)聯(lián)不需要額外的表字段;如果兩行是通過這種一對一關(guān)系相關(guān)聯(lián)的,那么這兩行就共享同樣的主關(guān)鍵字值。
          ?? 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>


          ?? 對應(yīng)的類: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>

          ?? 對應(yīng)的類:PersonCard.java
          public class PersonCard {

          ?private long id;

          ?private String cardID;

          ?private String beginDate;

          ?private String endDate;

          ?private Person person;
          }


          ?? 2)唯一外鍵關(guān)聯(lián)
          ?? 唯一外鍵關(guān)聯(lián)主要是一個外鍵和一個惟一關(guān)鍵字對應(yīng)。
          ?? 下面是修改后的配置文件和對應(yīng)的類。
          ?? 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>

          ?? 對應(yīng)的類: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>

          ?? 對應(yīng)的類:PersonCard.java
          public class PersonCard {

          ?private long id;

          ?private String cardID;

          ?private String beginDate;

          ?private String endDate;

          ?private Person person;
          }
          ???



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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 电白县| 布尔津县| 澜沧| 临汾市| 科尔| 广水市| 贡山| 闽侯县| 平阴县| 大邑县| 怀安县| 海南省| 梁河县| 盐边县| 桑植县| 海原县| 牟定县| 周宁县| 饶平县| 崇义县| 兴化市| 改则县| 蒙阴县| 教育| 汶川县| 兴安盟| 来凤县| 南木林县| 潜江市| 玛纳斯县| 古田县| 商南县| 汾西县| 界首市| 绿春县| 商都县| 翼城县| 青州市| 怀集县| 武冈市| 渑池县|