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


    上次的博文Hibernate从入门到精通(七)多对一单向关联映射我们主要讲解了一下多对一单向关联映射, 这次我们继续讲解一下一对多单向映射。

    一对多单向关联映射

    在讲解一对多单向关联之前,按 照我们的惯例首先看一下其相应的类结构图和代码。具体如下:

    public class Classes {        
        private int id;  
        private String name;          
        private Set students;  
        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 Set getStudents() {  
            return students;  
        }  
        public void setStudents(Set students) {  
            this.students = students;  
        }         
    }  
          
    public class Student {  
        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;  
        }  
    }

    对比一对多关联映射和我们之前讲的多对一关联映射,可以发现两种映射原理是一致的,都是在多 的一端加入一个外键,指向一的一端。它们的区别在于维护的关系不同,多对一维护的是多指向一的关系,有 了此关系,在加载多的时候可以将一加载上来,一对多维护的是一指向多的关系,有了此关系,在加载一的时 候可以将多加载上来。

    为了更好说明上述的结论,我们再看一下 一对多关联映射的表结构和相应的Hibernate映射配置。具体如下:

    <class name="com.zs.hibernate.Classes" table="t_classes">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="name"/>  
        <set name="students">  
             <key column="classesid"/>  
            <one-to-many class="com.zs.hibernate.Student"/>  
        </set>  
    </class>  
          
    <class name="com.zs.hibernate.Student" table="t_student">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="name"/>  
    </class>

    通过上面表中数据和我们之前关于多对一(参考Hibernate从入门到精通(七)多对 一单向关联映射)的对比,我们就可以清晰的看出,在一对多中,仅仅添加了一个<set/>标签,将多对 一中的一改为多而已,如果将集合看成一个整体,则两者实际上就没有区别了。

    一对多单向关联映射 缺陷

    到此为止,关于一对多单向关联基本,但是细心的读者可能发现了在一对多中的一的一端维护关 系是有缺陷的。例如:在保存Student的时候关系字段classesid为null,则将无法保存数据等等。这些问题如 何解决,这就需要引出我们下次讲解的一对多双向关联映射了。

  • 相关阅读:
    Django 三(路由)
    Django 二
    Django基础知识
    jquery值,属性,类的操作 文档的操作
    jquery事件对象 , 链式编程,选择器和过滤器,动画;js和jquery互转
    MySQL-1-简介-安装流程
    前端 里的面向对象
    篇二:JS身份证校验
    HTML5属性--(capture="camera") 上传照片或者打开手机相机
    SpringMVC @RequestBody接收Json对象字符串
  • 原文地址:https://www.cnblogs.com/duscl/p/4871413.html
Copyright © 2020-2023  润新知