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


    上次的博文Hibernate从入门到精通(六)一对一双向关联映射中我们介绍了一下一对一双向关联映射,本 次博文我们讲解一下多对一关联映射

    多对一单向关联映射

    多对一关联映射与一对一关联映射类 似,只是在多对一的指向端可以存在多个对象,在指向端加载的时候,同时加载被指向端。

    多对一和 一对一的异同

    对比一对一单向关联映射和多对一单向关联映射,两者的相同之处在于在指向端被加载 的时候,指向端会被一起加载进来,这一点从如下类的结构图和代码中看出。(以下只给出多对一相关图示和 代码,一对一图示和代码参考之前的文章Hibernate从入门到精通(五)一对一单向关联映射)

    public class Group {  
        private int id;           
        private String name;  
        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 class User {  
        private int id;           
        private String name;              
        private Group group;  
        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 Group getGroup() {  
            return group;  
        }  
        public void setGroup(Group group) {  
            this.group = group;  
        }  
    }

    通过分析上述代码和类图结构,单纯的看两者区别不大。但是通过映射表结构的对比,两者的不同 之处在于指向端一个与被指向端的关系,一对一单向关联是一对一关系,而多对一单向关联则是多对一关系。 (以下只给出多对一相关图示和代码,一对一图示和代码参考之前的文章Hibernate从入门到精通(五)一对一 单向关联映射)

    通过上说说明,我们也可以简单说一对一单向关联其实是多对一单向关联的一种特殊情况,这一点从其 Hibernate映射配置中可以更加明显看出。

    多对一映射配置:

    <class 
    
    name="com.zs.hibernate.User" table="t_user">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="name"/>  
        <many-to-one name="group" column="groupid" cascade="save-update"/>  
    </class>  
          
    <class name="com.zs.hibernate.Group" table="t_group">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="name"/>  
    </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>   
    <class name="com.zs.hibernate.IdCard" table="t_idCard">    
        <id name="id">    
            <generator class="native"/>    
        </id>    
        <property name="cardNo"/>    
    </class>

    我们从上面可以明显看出一对一只是在<many-to-one/> 标签中添加了 unique="true"这样一个限制指向端的属性而已。今天我们就讲到这里,下次我们讲解一下关于一 对多关单向联映射的相关内容。

  • 相关阅读:
    收藏:详解交换机基础知识
    Linux Used内存到底哪里去了?
    TCP三次握手和四次挥手以及11种状态
    操作系统深度研究(75页PPT)
    命令行版的斗地主你玩过没?
    10大黑客专用的 Linux 操作系统
    (四)Linux命令大全:帮助命令
    (三)Linux命令大全:文件搜索命令
    (二)Linux命令大全:权限管理命令
    (一)Linux命令大全:文件处理命令
  • 原文地址:https://www.cnblogs.com/duscl/p/4871407.html
Copyright © 2020-2023  润新知