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:當前表所引用的外鍵名