隨筆-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;
          }
          ???



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


          網站導航:
           
          主站蜘蛛池模板: 抚顺市| 灌阳县| 清水河县| 阳春市| 湘阴县| 乌审旗| 西充县| 鹤山市| 渭南市| 平乡县| 普兰店市| 五常市| 衡山县| 监利县| 台山市| 青神县| 宜阳县| 渑池县| 江山市| 喀喇沁旗| 昌平区| 华宁县| 田林县| 包头市| 泾阳县| 宁都县| 宣威市| 信丰县| 中西区| 济源市| 宕昌县| 来安县| 贺州市| 顺义区| 五大连池市| 若羌县| 绥芬河市| 济南市| 金塔县| 迁西县| 论坛|