1.關係的分類
單向關係
- 1 →1
- 1→N
- N→1
- N→N
雙向關係
- 1 - 1
- 1 - N
- N - N
2.無連接表的情況
2.1單向(只需在某一方書寫@OneToOne、@OneToMany、@ManyToOne、@ManyToMany的註解,而另一方則爲最普通的@Entity和@Table修飾的實體類即可)
2.1.1: 1→N(書寫在1的一方的實體中的相應屬性值上)
@OneToMany
@JoinColumn(該外鍵列並不在本類中,而是在關聯的實體類所對應的表中)
2.1.2: N→1(書寫在N的實體類中)
@ManyToOne
@JoinColumn
2.1.3: N→N(書寫在某一個N的類中,該關係必須要有連接表(中間表))
@ManyToMany
@JoinTable
2.1.4: 1→1(書寫在某一個類中)
@OneToOne
@JoinColumn
2.2雙向的連接情況(每個類的註解如下,左右對應)
2.2.1: 1 --- 1
@OneToOne(mappedBy) @OneToOne
@JoinColumn
2.2.2 1 --- N
@OneToMany(mappedBy) @ManyToOne
@JoinColumn
2.2.3 N --- N
ManyToMany(mappedBy) @ManyToMany
@JoinTable
3.有連接表的情況下,不再基於外鍵(只書寫了可能會使用到的,基本不可能使用到的則未書寫)
3.1單向
3.1.1: 1→N
@OneToMany
@JoinTable
3.1.2: 1→1
@OneToOne
@JoinTable
3.1.3:N→1
@ManyToOne
@JoinTable
3.2雙向
3.2.1: 1 -- N
@OneToMany(mappedBy) @ManyToOne
@JoinTable(只有在沒有mappedBy的時候才書寫,且與另一個類中的JoinTable對應屬性相同) @JoinTable
註解屬性書寫說明:
1.@OneToMany,@OneToOne,@ManyToMany,@ManyToOne的註解的常用屬性值:cascade、fetch、targetEntity(書寫上之後會有效率的提升)
2.@JoinTable的屬性值(主要包括三個):name、joinColumns(配置外鍵信息,參照當前類的主鍵列)、inverseJoinColumns(配置外鍵信息,參照關聯實體類的主鍵列)
3.mappedBy:表示放棄管理關聯的實體,交給另一方來維護,只在雙向關聯中使用。
4.@JoinColumn的主要屬性值:name,referenceColumnName,unique