一、多对多关系概述
以学生和课程之间的关系为例。
1.在多对多关系中涉及到的表有三张,两张实体表,一张专门用于维护关系的表。
2.多对多关系中两个实体类中应当分别添加对方的Set集合的属性,并提供set和get方法。
3.在配置映射文件的时候较一对多关系复杂。
二、映射文件
<set name="students" table="course_stu" cascade="save-update" inverse="true"> <!-- 现在讲inverse属性设置为true,这样就不能通过Course的配置文件维护Course和Stu之间的关系了 --> <key> <column name="cid"></column> </key> <many-to-many class="com.kdyzm.moretomore.domain.Stu"> <column name="sid"></column> </many-to-many> </set>
多对多关系映射文件书写解释:
set标签:
name属性:持久化类中的set集合的属性名称
table属性:中间表的表名
cascade属性:重要的属性,该属性能够将级联对象的状态从其他状态转变成持久化状态,而不抛出异常。
inverse属性:配置是否维护关系;如果是true,则不维护关系,如果是false,则维护关系。
key标签:设置外键,即中间表course_stu表中的外键,表示通过course_stu表通过该字段能够找到当前表。
many-to-many标签:设置关联表
class属性:设置关联表对应的持久化类
column属性:设置该关联表对应在中间表中的外键。