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

posted @ 2015-02-05 13:30  不少年  阅读(1344)  评论(0编辑  收藏  举报