zoukankan      html  css  js  c++  java
  • 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,则将无法保存数据等等。这些问题如 何解决,这就需要引出我们下次讲解的一对多双向关联映射了。

  • 相关阅读:
    D3.js:交互式操作
    D3.js:Update、Enter、Exit
    D3.js:动态效果
    D3.js:完整的柱形图
    D3.js:坐标轴
    D3.js
    ES 6 : 数组的扩展
    ES 6 : Math对象的扩展
    拉勾网企业图片列表效果
    拉勾网图片切换效果
  • 原文地址:https://www.cnblogs.com/duscl/p/4871413.html
Copyright © 2011-2022 走看看