首頁  >  文章  >  Java  >  如何在 Hibernate 4 中使用註解定義關係?

如何在 Hibernate 4 中使用註解定義關係?

Patricia Arquette
Patricia Arquette原創
2024-11-03 10:33:02303瀏覽

How to Define Relationships in Hibernate 4 using Annotations?

在 Hibernate 4 中註解關係

在 Hibernate 4 和 Spring 中,您可以使用註解定義類別之間的各種關係。以下概述如何建立一對一、一對多、多對一和多對多關係:

單向一對一關係:

  • 在所屬類別上使用@OneToOne(所屬類別的主鍵引用另一個類別)。
  • 另一個類別上不需要對應的對應。

雙向一對一關係:

  • 在所屬類上使用@OneToOne(mappedBy = "bar") 來指示關係由另一個類別管理。
  • 在另一個類別上使用@OneToOne,並使用mappedBy 指向所屬類別。

單向一對多關係使用使用者管理的連結表:

  • 在所屬類上使用 @OneToMany。
  • 使用 @JoinTable 定義實體之間的聯結表。
  • 否另一個類別需要映射。

使用外鍵映射的雙向一對多關係:

  • 使用 @OneToMany(mappedBy = "bar") 在所屬類別上。
  • 在另一個類別上使用@ManyToOne,並使用mappedBy 指向所屬類別。

雙向多對多許多使用 Hibernate 託管連接表:

  • 在兩個類別上使用 @OneToMany 來建立自引用關係。
  • 使用 @JoinTable 定義連線表。

使用使用者管理的聯接表物件進行雙向多對多:

  • 在兩個類別上使用@OneToMany 建立自引用關係.
  • 定義一個單獨的類別作為連接表物件。

確定雙向關係的「擁有」方:

  • 通常,擁有另一個類別集合的類別被視為「擁有」方。
  • 這決定了外鍵的儲存位置以及哪個類別管理變更。

選擇 FetchType

  • 延遲抓取(預設)僅在需要時載入相關物件。
  • 急切抓取(設定 fetchType = FetchType.EAGER)載入立即關聯物件。

透過使用Hibernate.initialize() 或FetchMode 避免LazyInitializationException:

  • 使用Hibernate.Nate.延遲獲取的集合。
  • 在條件上使用 setFetchMode("roles", FetchMode.SUBSELECT) 來急切地載入集合。

決定級聯方向:

  • 使用級聯指定相關實體之間哪些操作(建立、更新、刪除)級聯。
  • 如果需要,可以雙向設定級聯,但前提是在語意上有意義。

孤兒刪除:

  • 在 @OneToMany 上啟用 orphanRemoval 以自動刪除孤兒實體(不再引用的實體)。

以上是如何在 Hibernate 4 中使用註解定義關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn