欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hibernate基础(九):多对多双向关联

程序员文章站 2022-04-24 10:51:35
...

1.一对多关联和多对多关联是怎么实现的

           一对多关联:前文说过,主表在子表中设置外键,通过外键将一和多关联起来

           多对多关联:除了主表和子表之外,我们需要新增一个维护他们关系的表。这个表里存入主表的主键和子表的主键,通过主子表之间的一一对应来确定多对多的关系

                      注:所以,我们知道,多对多的关键在于那张关系表。而关系表里的字段分别来自主表和子表。因此在主表子表配置的时候其实我们还需要向这个关系表里也做一些配置

 

2.如何实现

           在student.hbm.xml中设置配置:

<set name="courses" table="student_source">
    <key><column name="sid"></column></key>
    <many-to-many class="domain.Course" column="cid"></many-to-many>
</set>

           在course.hbm.xml中设置配置:

<set name="students" table="student_course">
    <key><column name="cid"></column></key>
    <many-to-many class="domain.Student" column="sid"></many-to-many>
</set>

           经过上述设置,则会有一个student_course表,表里会有sid和cid字段。

           java端代码(session前的代码省略):

Student student = new Student();
student.setSname("bbb");
Course course = (Course)session.get(Course.class,1L);
Set<Course> courses = new HashSet<Course>();
courses.add(course);
student.setCourses(course);

                      注:其实也可以以课程角度,但是效率低。一般偏向于多的一方

 

           其实不难看出,所谓多对多,就是多个一对多的结合!

相关标签: hibernate 多对多