zoukankan      html  css  js  c++  java
  • 浅析Hibernate映射(二)——关系映射(3)

    双向一对一关联映射

    与单向一对一关联映射一样,双向映射依然可以采用两种方式实现:1、主键关联;2、唯一外键关联

    1、主键关联

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

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

    User.hbm.xml

    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.xml

    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>  


    2、唯一外键关联

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

    映射文件:

    User.hbm.xml

    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

    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"/>  
      1. </class>   
      2. lt;/hibernate-mapping>  
  • 相关阅读:
    阿里巴巴的字体图标库不错
    SQL语句一次INSERT多条记录的方法
    Oracle中改变表的Owner和tablespace
    QQ在线状态的使用
    gtest
    Git
    gRPC安装的小问题
    蓝桥杯试题 基础练习 查找整数
    Product Backlog
    本周工作量统计
  • 原文地址:https://www.cnblogs.com/niuchunjian/p/4520283.html
Copyright © 2011-2022 走看看