北京北大青鳥(niǎo)通州校區(qū)提供:Hibernate各種映射關(guān)系總結(jié)

      北京北大青鳥(niǎo)通州校區(qū)學(xué)術(shù)部提供:

      1 多對(duì)一
        第一步 :建立對(duì)象模型
        User                                            
        -----------------------------
        id:int
        name:String
        group:Group
        Group
        ------------------------------
        id:int
        name:String 
        第二步:映射文件
          XML代碼
      <?xml version="1.0"?> 
      <!DOCTYPE Hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="User" table="t_user"> 
         <id name="id" column="id"> 
          <generator class="identity"/> 
         </id> 
         <property name="name" column="User_name" unique="true"/> 
         <many-to-one name="group" column="groupid"/> 
        </class> 
      </hibernate-mapping>
        2 一對(duì)一映射
        2.1 主鍵映射
        1. 建立對(duì)象模型
          Person[id-int,name-String]
      IdCard[id-int,cardNo-int]
        2. 映射文件
        Xml代碼
      <?xml version="1.0"?> 
      <!DOCTYPE hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Person" table="t_person"> 
         <id name="id"> 
          <generator class="foreign"> 
          <param name="property">idCard</param> 
          </generator> 
         </id> 
         <property name="name" column="Person_name" /> 
         <one-to-one name="idCard" constrained="true"/> 
        </class> 
      </hibernate-mapping>
       2.2 主鍵映射雙向
        只需要在IdCard 的XML中添加<one-to-one>標(biāo)簽指向person,就可以告訴Hibernate如何加載person,默認(rèn)按照主鍵加載
        2.3 外鍵關(guān)聯(lián)映射
        1. 對(duì)象模型
          Person[id-int,name-String,idcard-IdCard]
      IdCard[id-int,cardNo-int]
        2 mapping文件
        Xml代碼
          Person.xml 
      <?xml version="1.0"?> 
      <!DOCTYPE hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Person" table="t_person"> 
         <id name="id"> 
          <generator class="identity"> 
          </generator> 
         </id> 
         <property name="name" column="Person_name" /> 
         <many-to-one name="idCard" unique="true"></many-to-one> 
        </class> 
      </hibernate-mapping>
        2.4 one-to-one 外鍵雙向mapping
        只需要在另一端(IdCard)加入<one-to-one>標(biāo)簽,但是hibernate默認(rèn)按照主鍵加載,所以要告訴hibernate按照指定列來(lái)加載
        示意:
        Xml代碼
          Id-card 
      <?xml version="1.0"?> 
      <!DOCTYPE hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="IdCard" table="t_idcard"> 
         <id name="id" column="id"> 
          <generator class="identity"/> 
         </id> 
         <property name="cardNo" column="cardno" /> 
         <one-to-one name="person" property-ref 
       
      ="idCard"></one-to-one> 
        </class> 
      </hibernate-mapping>
      3 一對(duì)多映射
        1  建立對(duì)象模型
          Classes[id-int,name-String,student-Set]
      Student[id-int,name-String]
        2  映射文件
        XML代碼
      <?xml version="1.0"?> 
      <!DOCTYPE Hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Class" table="t_class"> 
         <id name="id"> 
          <generator class="native"/> 
         </id> 
         <property name="name" /> 
         <set name="student" > 
         <key column="classid" /> 
         <one-to-many class="Student"/> 
         </set> 
        </class> 
      </hibernate-mapping>
        缺點(diǎn):若將Student的classid設(shè)置為非空,將無(wú)法保存。應(yīng)為不是student這一端維護(hù)關(guān)系,所以student不知道是哪個(gè)班級(jí),所以需要發(fā)出多余的update語(yǔ)句來(lái)更新關(guān)系。
      4 多對(duì)多mapping
        單向(采用第三方表)
        1  對(duì)象模型
          Role[id-int,name-String]
      User[id-int,name-String,role-Set]
        2映射文件
        XML代碼
      <?xml version="1.0"?> 
      <!DOCTYPE Hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="User" table="t_user"> 
         <id name="id"> 
          <generator class="native"/> 
         </id> 
         <property name="name" /> 
         <set name="role" table="t_user_role"> 
         <key column="userid"></key> 
         <many-to-many class="Role" column="roleid" /> 
         </set> 
        </class> 
      </hibernate-mapping>
        雙向:
        1 對(duì)象模型:
          Role[id-int,name-String,user-Set]
      User[id-int,name-String,role-Set]
        2 mapping文件:
        Xml代碼
      <?xml version="1.0"?> 
      <!DOCTYPE hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Role" table="t_role"> 
         <id name="id"> 
          <generator class="native"/> 
         </id> 
         <property name="name" /> 
         <set name="user" table="t_user_role"> 
         <key column="userid"></key> 
         <many-to-many class="User" column="userid" /> 
         </set> 
        </class> 
      </hibernate-mapping> 
      5 繼承mapping
        第一類(lèi)繼承映射
        1 對(duì)象模型
          Animal 
      private int id
      private String name
      private Boolean sex
      --------------------------------------------------
      public class Bird extends Animal 
      private int height
      --------------------------------------------------
      public class Pig extends Animal
      private int weight
        2 mapping 文件
        XML代碼
      <?xml version="1.0"?> 
      <!DOCTYPE Hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Animal" table="t_animal" > 
         <id name="id" > 
          <generator class="native"/> 
         </id> 
         <discriminator column="type" type="string"></discriminator> 
         <property name="name"/> 
         <property name="sex"/> 
         <subclass name="Pig" discriminator-value="P"> 
          <property name="weight"/> 
         </subclass> 
         <subclass name="Bird" discriminator-value="B"> 
          <property name="height"/> 
         </subclass> 
        </class> 
        
       
        
      </hibernate-mapping>
      第二類(lèi)mapping
        1 對(duì)象模型
        2 mapping 文件
        XML代碼
      <?xml version="1.0"?> 
      <!DOCTYPE Hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Animal" table="t_animal" > 
         <id name="id" > 
          <generator class="native"/> 
         </id> 
         <property name="name"/> 
         <property name="sex"/> 
          <joined-subclass name="Pig" table="t_pig"> 
           <key column="pid"/> 
           <property name="weight"/> 
          </joined-subclass> 
          <joined-subclass name="Bird" table="t_bird"> 
           <key column="bid"/> 
           <property name="height"/> 
          </joined-subclass> 
      </class> 
      </hibernate-mapping>
        3 第三類(lèi)mapping
        1對(duì)象模型
        2 mapping 文件
        Xml代碼
      <?xml version="1.0"?> 
      <!DOCTYPE hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="Animal" table="t_animal" > 
         <id name="id" > 
          <generator class="native"/> 
         </id> 
         <property name="name"/> 
         <property name="sex"/> 
         <union-subclass name="Pig" table="t_pig"> 
         <property name="weight"/> 
         </union-subclass> 
         <union-subclass name="Bird" table="t_bird"> 
         <property name="height"/> 
         </union-subclass> 
      </class> 
      </hibernate-mapping>
      6 Component 映射
        component不是實(shí)體,沒(méi)有OID。
        1 對(duì)象模型
          public class Employee 
      private int id
      private String name
      private Contact contact
      -------------------------------------
      public class Contact  
      private String email
      private String address
      private String zipcode
      private String contactTel
      -------------------------------------
      public class User  
      private int id
      private String name
      private Contact contact
        2 mapping文件
        XML代碼
      <?xml version="1.0"?> 
      <!DOCTYPE Hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="User" table="t_user" > 
         <id name="id" > 
          <generator class="native"/> 
         </id> 
         <property name="name"/> 
         <component name="contact"> 
         <property name="email"></property> 
         <property name="address"></property> 
         <property name="zipcode"></property> 
         <property name="contactTel"></property> 
         </component> 
        </class> 
       </hibernate-mapping>
        7 復(fù)合主鍵mapping
        通常將復(fù)合主鍵相關(guān)屬性,單獨(dú)放到一個(gè)類(lèi)中
        這個(gè)類(lèi)必須實(shí)現(xiàn) Serializable接口
        這個(gè)類(lèi)必須重寫(xiě)hashCode和equals方法
        XML
      <?xml version="1.0"?> 
      <!DOCTYPE hibernate-mapping PUBLIC 
       "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
      <hibernate-mapping package="com.nintenyun.hibernate"> 
        <class name="SC" table="t_sc" > 
         <composite-id name="scpk"> 
         <key-property name="sno"/> 
         <key-property name="cno"/> 
         </composite-id>  
         <property name="sname"></property> 
         <property name="cname"></property> 
        </class> 
      </hibernate-mapping>

       

      北大青鳥(niǎo)網(wǎng)上報(bào)名
      北大青鳥(niǎo)招生簡(jiǎn)章
      主站蜘蛛池模板: 日韩精品一区二区三区在线观看| 激情内射亚州一区二区三区爱妻| 精品视频在线观看一区二区| 精品成人av一区二区三区| 日韩一区二区在线视频| 三上悠亚一区二区观看| 国产在线精品观看一区| 日本无码一区二区三区白峰美| 亚洲av午夜精品一区二区三区| 怡红院一区二区在线观看| 国产精品高清一区二区人妖| 久久精品国产一区二区电影| 夜夜高潮夜夜爽夜夜爱爱一区| 蜜臀AV免费一区二区三区| 亚洲电影一区二区三区| 果冻传媒董小宛一区二区| 国产成人久久一区二区不卡三区| 中文字幕乱码人妻一区二区三区| 亚洲高清日韩精品第一区| 91在线精品亚洲一区二区| 精品一区二区三区东京热| 国产短视频精品一区二区三区| 日韩人妻精品一区二区三区视频| 亚洲av无码一区二区三区网站| 久久精品道一区二区三区| 国产一区二区免费| 无码人妻一区二区三区在线| 亚洲国产精品第一区二区| 亚洲电影唐人社一区二区| 亚洲无圣光一区二区| 中文乱码人妻系列一区二区| 亚洲色一区二区三区四区| 国产成人av一区二区三区在线| 四虎一区二区成人免费影院网址 | 国产在线精品一区二区三区不卡| 国产伦一区二区三区高清 | 久久精品中文字幕一区| 国产品无码一区二区三区在线蜜桃| 无码人妻少妇色欲AV一区二区 | 国产福利一区二区精品秒拍| 福利一区在线视频|