zoukankan      html  css  js  c++  java
  • 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相关配置的具体内容,建议大家找一本相关书籍进 行详细阅读。

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

  • 相关阅读:
    git+jenkins持续集成一:git上传代码
    性能测试五十:Jmeter+Influxdb+Grafana实时数据展示系统搭建
    性能测试四十九:ngrinder压测平台
    性能测试四十八:Jenkins+Ant+Jmeter系统部署
    性能测试四十七:jmeter性能监控工具ServerAgent
    工具篇:使用natapp工具映射内网到外网访问
    总想自己动动手系列·3·微信公众号和外网服务交互之通过TOKEN验证(准备篇·1)
    总想自己动动手系列·2·本地和外网(Liunx服务器上部署的web项目)按照自定义的报文格式进行交互(完结篇)
    总想自己动动手系列·1·本地和外网(Liunx服务器上部署的web项目)按照自定义的报文格式进行交互(准备篇)
    Linux-在新买的阿里云服务器上部署Tomcat并支持外网访问的配置(步骤记录)
  • 原文地址:https://www.cnblogs.com/duscl/p/4871393.html
Copyright © 2011-2022 走看看