使用Spring 在Hibernate 4 中使用註解定義關係
要在Hibernate 4 中為提供的類別Foo 使用註解實現各種類型的關係和Bar,讓我們深入研究一下具體情況。
一對多單向關係:
使用@OneToMany註解和List屬性。保持 Bar 類別不變。這建立了一對多關係,其中 Foo 可以有多個關聯的 Bar 對象,但 Bar 不能引用回 Foo。
雙向一對多關係(由 Foo.class 管理) ):
在 Foo.class 上使用 @OneToOne 註釋,cascade = CascadeType.ALL。新增 @JoinColumn 註釋,指定 Bar.class 上套用於連接的列。對於Bar.class,使用@OneToOne註解並指定mappedBy =「bar」來指示該關係由Foo.class管理。
使用User-的一對多單向關聯式託管連接表:
使用 @OneToMany 註解和 @JoinTable 註解來指定單獨的聯接表。兩側使用 @JoinColumn 註解定義連接列。如有必要,請使用附加類別來表示連接表。
使用外鍵映射的雙向一對多關係:
On Foo.class,使用 @OneToMany(mappedBy = "bar") 來映射關係。在 Bar.class 上,使用 @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) 和 @JoinColumn 註解。
使用Hibernate 進行雙向多對多-託管連接表:
在Foo.class 和Bar.class 上使用@ManyToMany,並為連接表使用@JoinTable註釋,指定連接列。
使用使用者管理的聯接表物件的雙向多對多:
與單向一對多範例類似,使用 @JoinTable 註解的 @OneToMany。建立一個單獨的類別來表示聯接表,並使用 @ManyToOne 將關係對應到 Foo.class 和 Bar.class。
確定獲取類型:
使用 fetchType .LAZY 延遲相關集合的加載,直到它們被訪問為止。使用 fetchType.EAGER 立即載入集合,但請注意,它可能會影響效能。考慮在 Service 類別中使用 Hibernate.initialize() 來手動初始化特定用例的延遲載入集合。
決定級聯方向:
使用 @Cascade 註解指定級聯選項。一般來說,級聯會改變所有權關係的方向。如果在應用程式上下文中沒有意義,請避免從子級到父級的級聯更新或刪除。
孤兒刪除:
在@OneToMany 註釋讓Hibernate 在從父物件的集合中刪除孤立物件(即那些不與任何其他父物件關聯的物件)時自動刪除它們。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3