• Hibernate(五)一对一单向关联映射


    上次的博文中 Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来 我们会讲稍微复杂点的映射——关系映射。

    关系映射分类

    关系映射即在基本映射的基础上处理 多个相关对象和多个相关表之间联系的映射。关系映射从对应关系的角度可以分为如下七种类型:一对一单向关联 一对一双向关联 一对多单向关联 多对一单向关联 一对多双向关联 多对多单向关联

    多对多双向关联

    接下来博客,我们会分别讲解一下这七种关系映射。今天我们只讲其中的一对一单向关联。

    一对一 单向关联

    一对一单向关联从对象的角度分析,即在一个对象(Person)中存在另一个对象(IdCard)的引 用,而在另一个对象(IdCard)中则不存在该对象(Person)的引用,这样就可以在加载该对象(Person)的时候找 到另一个对象(IdCard)。类结构图如下所示:

    具体代码如下所示:

    public class Person {  
        private int id;           
        private String name;              
        private IdCard idCard;  
              
        public int getId() {  
            return id;  
        }  
        public void setId(int id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public IdCard getIdCard() {  
            return idCard;  
        }  
        public void setIdCard(IdCard idCard) {  
            this.idCard = idCard;  
        }  
    }  
          
    public class IdCard {             
        private int id;           
        private String cardNo;  
        public int getId() {  
            return id;  
        }  
        public void setId(int id) {  
            this.id = id;  
        }  
        public String getCardNo() {  
            return cardNo;  
        }  
        public void setCardNo(String cardNo) {  
            this.cardNo = cardNo;  
        }  
    }


    上述类结构的相应根据关联的策略不同会生成不同的表结构,可以分为主键关联和唯一外键关联。

    主键关联

    主键关联表结构如下:

    可以看出,主键关联即利用主 键进行关联,关联主键的值相同。其相应的*.hbm.xml配置文件代码如下:

    <class 
    
    name="com.zs.hibernate.IdCard" table="t_idCard">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="cardNo"/>  
    </class>  
          
    <class name="com.zs.hibernate.Person" table="t_person">  
        <id name="id">                          
            <generator class="foreign">                             
                <param name="property">idCard</param>  
            </generator>  
        </id>  
        <property name="name"/>  
        <one-to-one name="idCard" constrained="true"/>  
    </class>

    唯一外键关联

    唯一外键关联表结构如下:

    与主键关联所不 同,唯一外键关联除主键外,在其一对一的指向端(Person)存在一个唯一外键,该唯一外键与被指向端 (IdCard)相关联,关联主键的值相同。其相应的*.hbm.xml配置文件代码如下:

    <class 
    
    name="com.zs.hibernate.IdCard" table="t_idCard">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="cardNo"/>  
    </class>  
          
    <class name="com.zs.hibernate.Person" table="t_person">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="name"/>  
        <many-to-one name="idCard" unique="true"/>  
    </class>

    同之前的基本映射一样,我们同样可以利用注解对类带进行相关配置,这里我们就 不做过多的介绍了。还是之前说过的,要想了解注解和XML相关配置的具体内容,建议大家找一本相关书籍进 行详细阅读。

    到此为止关于一对一单向关联我们就已经讲完了,下次我们继续讲解关系映射中的一对 一双向关联。

  • 相关阅读:
    【LeetCode】456. 132 Pattern
    【Python&Sort】QuickSort
    Python虚拟环境的配置
    【LeetCode】459. Repeated Substring Pattern
    【LeetCode】462. Minimum Moves to Equal Array Elements II
    【LeetCode】20. Valid Parentheses
    radio 获取选中值
    页面加载时自动执行(加载)js的几种方法
    加一个字段: updateTime 更新时间
    多用户同时处理同一条数据解决办法
  • 原文地址:https://www.cnblogs.com/duscl/p/4871393.html
Copyright © 2020-2023  润新知