亚洲天堂一级片-亚洲天堂三区-亚洲天堂久久精品成人-亚洲天堂毛片-久久国产欧美日韩高清专区-久久国产欧美日韩精品免费

北京北大青鳥通州校區提供:Hibernate各種映射關系總結

北京北大青鳥通州校區學術部提供:

1 多對一
  第一步 :建立對象模型
  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 一對一映射
  2.1 主鍵映射
  1. 建立對象模型
    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>標簽指向person,就可以告訴Hibernate如何加載person,默認按照主鍵加載
  2.3 外鍵關聯映射
  1. 對象模型
    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>標簽,但是hibernate默認按照主鍵加載,所以要告訴hibernate按照指定列來加載
  示意:
  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 一對多映射
  1  建立對象模型
    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>
  缺點:若將Student的classid設置為非空,將無法保存。應為不是student這一端維護關系,所以student不知道是哪個班級,所以需要發出多余的update語句來更新關系。
4 多對多mapping
  單向(采用第三方表)
  1  對象模型
    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 對象模型:
    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
  第一類繼承映射
  1 對象模型
    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>
第二類mapping
  1 對象模型
  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 第三類mapping
  1對象模型
  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不是實體,沒有OID。
  1 對象模型
    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 復合主鍵mapping
  通常將復合主鍵相關屬性,單獨放到一個類中
  這個類必須實現 Serializable接口
  這個類必須重寫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>

 

北大青鳥網上報名
北大青鳥招生簡章
主站蜘蛛池模板: 99久久免费精品国产免费 | 国产欧美精品一区二区三区 | 久久久一本精品99久久精品66 | 中文字幕亚洲不卡在线亚瑟 | 精品视频免费在线 | 国产精品久久久久久久免费 | 日本一区二区三区免费视频 | 亚洲视频在线一区 | 成年人午夜影院 | 久久精品中文字幕有码日本 | 91福利国产在线观一区二区 | 澳门毛片免费观看 | 92国产福利久久青青草原 | 足恋玩丝袜脚视频免费网站 | 欧美成人免费一区在线播放 | 中文字幕在线无限2021 | 欧美中日韩在线 | 色播亚洲视频在线观看 | 亚洲欧美日韩高清综合678 | 最新理论三级中文在线观看 | 国产精品亚洲精品日韩已满 | 韩国一级做a爰片性色毛片 韩国一区在线 | 国外免费一级 | 国产成人免费高清视频 | 色香欲综合成人免费视频 | 波多野结衣免费免费视频一区 | 亚洲精品亚洲人成在线 | 韩国一级特黄清高免费大片 | 精品在线一区二区三区 | 日韩偷拍自拍 | 欧美久 | 亚洲天堂一区二区在线观看 | 欧美极品在线视频 | 久久91这里精品国产2020 | 一道精品视频一区二区三区图片 | 亚洲精品区在线播放一区二区 | 男女福利视频 | 午夜天堂视频 | 91影视做在线观看免费 | 国产天堂 | 午夜香蕉成视频人网站高清版 |