zoukankan      html  css  js  c++  java
  • hibernate一对一单项关联映射

    一、主键关联

      1、两个实体对象的主键一样,以表明它们之间的一一对应关系;

      2、不需要多余的外键字段来维护关系,仅通过主键来关联,即Person的主键要依赖IdCard的主键,他们共用一个主键值。

    Person.hbm.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.liang.hibernate">  
        <class name="Person" table="t_person">  
            <id name="id">  
            <!-- 采用foreign生成策略,forgeign会取得另外一个关联对象的标识 -->  
                <generator class="foreign" >  
                    <param name="property">idCard</param>  
                </generator>  
            </id>  
            <property name="name"></property>  
            <!--   
                one-to-one指示hibernate如何加载其关联对象,默认根据主键加载  
                也就是拿到关系字段值,根据对端的主键来加载关联对象  
                  
                constrained="true"表示约束,当前主键(person的主键)还是一个外键  
                参照了对端的主键(IdCard的主键),也就是会生成外键约束语句  
             -->  
             <!-- idCard属性,表达的是本对象与IdCard的一对一关系。 -->  
            <one-to-one name="idCard" class="IdCard"  constrained="true"></one-to-one>  
        </class>  
    </hibernate-mapping>  

      

    二、唯一外键关联

     1、两个实体对象用一个外键来关联,以表表明对象之间的关系。

     2、其实它是多对一关联映射的特例,多的一端加上唯一的限制之后,用来表示一对一的关联关系。

    Person.hbm.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.liang.hibernate">  
        <class name="Person" table="t_person">  
            <id name="id">  
                <generator class="native" ></generator>  
            </id>  
            <property name="name"></property>  
            <!-- 由于它是一对一的唯一外键关联,它是多对一关联的特例,注释可以直接写成多对一关联-->  
            <!-- idCard属性,表达的是本对象与IdCard的多对一关系。 -->  
         <!-- 采用<mang-to-one>标签来映射,指定多的一端unique为true,  
          这样就限制了多的一端的多重性为一,就是这样来映射的。 
          -->
        
    <many-to-one name="idCard" class="IdCard" column="idCardId" unique="true"></many-to-one>
        </class>  
    </hibernate-mapping>  

      

  • 相关阅读:
    python -- twisted初探
    python -- redis连接与使用
    redis使用
    python -- 异步编程
    python
    python
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
  • 原文地址:https://www.cnblogs.com/gXing/p/8649675.html
Copyright © 2011-2022 走看看