使用Spring 在Hibernate 4 中使用註解定義關係
要在Hibernate 4 中為提供的類Foo 使用註解實現各種類型的關係和酒吧,讓我們深入研究一下
一對多單向關係:
使用@OneToMany 註解和List
雙向一對多關係(由 Foo.class 管理) ):
在 Foo.class 上使用 @OneToOne 註釋,cascade = CascadeType.ALL。新增 @JoinColumn 註釋,指定 Bar.class 上套用於連接的列。對於 Bar.class,使用 @OneToOne 註解並指定mappedBy = "bar" 來指示該關係由 Foo.class 管理。
使用 User- 的一對多單向關聯式託管連接表:
使用 @OneToMany 註解和 @JoinTable 註解來指定單獨的聯接表。兩側使用 @JoinColumn 註解定義連接列。如有必要,請使用附加類別來表示連接表。
使用外鍵映射的雙向一對多關係:
在 Foo.class 上,使用 @OneToMany(mappedBy = "bar") 來對應關係。在 Bar.class 上,使用 @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) 和 @JoinColumn 註解。
使用Hibernate 的雙向多對多-託管連接表:
在兩者上使用@ManyToMany Foo.class 和Bar.class,並對聯接表使用@JoinTable 註釋,指定聯結列。
使用使用者管理的聯接表物件進行雙向多對多:
與單向一對多範例類似,使用 @OneToMany 和 @JoinTable 註解。建立一個單獨的類別來表示聯接表,並使用 @ManyToOne 將關係映射到 Foo.class 和 Bar.class 上。
確定獲取類型:
使用 fetchType .LAZY 延遲相關集合的加載,直到它們被訪問為止。使用 fetchType.EAGER 立即載入集合,但請注意,它可能會影響效能。考慮在 Service 類別中使用 Hibernate.initialize() 來手動初始化特定用例的延遲載入集合。
決定級聯方向:
使用 @Cascade 註解指定級聯選項。一般來說,級聯會改變所有權關係的方向。如果在應用程式上下文中沒有意義,請避免從子級到父級的級聯更新或刪除。
孤立物件刪除:
在@OneToMany 註解上設定orphanRemoval = true 以使Hibernate 在刪除孤立物件(即不與任何其他父物件關聯的物件)時自動刪除它們來自父物件的集合。
以上是如何使用 Spring 在 Hibernate 4 中定義與註解的關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!