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

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);

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏哥哥啊Aaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值