Hibernate笔记三,表设计之多对多
例子:学生表和课程表(多对多关系)
学生类
public class Student {
private Integer id;
private String name;
private Set<Course> courses = new HashSet<>();
//Get 和 Set 略
}
课程表
public class Course {
private Integer id;
private String name;
private Set<Student> students = new HashSet<>();
//Get 和 Set 略
}
一个学生肯定会有多门课程,一门课程也肯定有许多学生,在类中采用Set来保存对方对象,在对应的ORM映射文件中,表达多对多用set 节点表示,两个映射文件中的set 节点类似。
<set name="courses" table="t_student_course" inverse="false" cascade="save-update">
<key column="sid"></key>
<many-to-many class="Course" column="cid"></many-to-many>
</set>
table 属性:多对多中表达关系的第三张表名(在第三张表中储存双方表的主键)
key: 表示子表中的外键
column 表示外键名
many-to-many :多对多关系
class : 另外 ”多“ 的一方的完整类名
column:当前表所引用的外键名