隨筆-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>


          ?? 對應的類: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)唯一外鍵關(guān)聯(liá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
          ???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;
          }
          ???



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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 宜兰市| 巴东县| 台中市| 沙湾县| 景德镇市| 白山市| 平江县| 黑河市| 临汾市| 丰城市| 民县| 长子县| 镶黄旗| 满城县| 凉城县| 湟源县| 遵义县| 兖州市| 庆安县| 三穗县| 汝南县| 彭阳县| 淅川县| 琼结县| 湖州市| 水富县| 望都县| 平潭县| 武胜县| 宁南县| 恭城| 乌审旗| 兴国县| 桃源县| 合山市| 新乡市| 政和县| 曲阳县| 泾阳县| 老河口市| 苍山县|