浅析Hibernate映射(二)——关系映射(3)

双向一对一关联映射html

 

与单向一对一关联映射同样,双向映射依然能够采用两种方式实现:一、主键关联;二、惟一外键关联app

 

一、主键关联spa

映射出的关系模型与单向同样:.net

映射文件与单向的区别在于:须要在Card加入<one-to-one>标签,指示hibernate将关联对象User根据主键加载上来。<one-to-one>不影响存储,只影响加载hibernate

User.hbm.xmlxml

[html]  view plain copy print ?
 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="com.jialin.hibernate">  
  6.   
  7.     <class name="User">  
  8.         <id name="id">  
  9.             <!--采用foreign策略,能够取得关联对象的主键  -->  
  10.             <generator class="foreign">  
  11.                 <!--property表明要关联的对象 -->  
  12.                 <param name="property">card</param>  
  13.             </generator>  
  14.         </id>  
  15.         <property name="name" />  
  16.           
  17.         <one-to-one name="card" />  
  18.     </class>  
  19.   
  20. </hibernate-mapping>  

Card.hbm.xmlhtm

[html]  view plain copy print ?
 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="com.jialin.hibernate">  
  6.   
  7.     <class name="Card">  
  8.         <id name="id">  
  9.             <generator class="native" />  
  10.         </id>  
  11.         <property name="cardNo" />  
  12.         <!--<one-to-one>不影响存储,只影响加载-->  
  13.         <one-to-one name="person" />  
  14.   
  15.     </class>  
  16.   
  17. </hibernate-mapping>  


二、惟一外键关联对象

映射出的关系模型与单向同样:blog

映射文件:ip

User.hbm.xml

[html]  view plain copy print ?
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="com.jialin.hibernate">  
  6.   
  7.     <class name="Person">  
  8.         <id name="id">  
  9.             <generator class="native" />  
  10.         </id>  
  11.         <property name="name" />  
  12.         <many-to-one name="card" unique="true"></many-to-one>  
  13.     </class>  
  14.   
  15. </hibernate-mapping>  

Card.hbm.xml

[html]  view plain copy print ?
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="com.jialin.hibernate">  
  6.   
  7.     <class name="Card">  
  8.         <id name="id">  
  9.             <generator class="native" />  
  10.         </id>  
  11.         <property name="cardNo" />  
  12.         <!--必须指定<one-to-one>  
  13. 标签中的property-ref属性为关系字段的名称-->  
  14.         <one-to-one name="person" property-ref="card"/>  
[html]  view plain copy print ?
    1. </class>   
    2. lt;/hibernate-mapping>  
相关文章
相关标签/搜索