Hibernate的關聯映射

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章