[英]Bidirectional relationship between JPA entities in a hierarchy
我正在為我的項目使用 Spring 數據 JPA(提供者為 hibernate),想知道何時需要實體之間的雙向映射?
在我的用例中,我有一個CategoryGroup
實體與Department
實體具有@ManyToOne
關系。 目前,我在Department
實體中沒有對應的@OneToMany
關系。 從我可以理解的看其他帖子,除非我需要通過我的實體/休眠刪除,我可能不需要這樣做。 我想知道建立雙向關系還能得到什么?
這是我的Department
,不包括訪問者:
@Entity
@Table(name="dbo.Department")
public class Department
{
@Id
@Column(name="id")
private long id;
@Column(name="name")
private String name;
}
這是不包括訪問器的CategoryGroup
:
@Entity
@Table(name="dbo.CategoryGroup")
public class CategoryGroup
{
@Id
@Column(name="id")
private long id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="dept_id")
private Department department;
@Column(name="name")
private String name;
public CategoryGroup()
{
}
public CategoryGroup(String name, Department department)
{
this.name = name;
this.department = department;
}
}
作為后續,我的結構本質上是分層的。 Category
實體與Category
實體具有@ManyToOne
關系,並且SubCategory
實體與CategoryGroup
實體具有@ManyToOne
關系。
如果我繼續在關系的父端添加雙向關系映射,那么這是否意味着一旦我檢索到Department
我將最終獲得整個實體層次結構直到SubCategory
? 對於我的用例,這是不可取的。 標記與FetchType.LAZY
的關系會緩解這種情況嗎?
謝謝
OneToMany 和 ManyToMany 關聯默認是惰性的,因此在添加這些關聯時不會獲取整個層次結構。
通常,添加這些關聯可以極大地幫助您進行查詢,因為它減少了根據連接條件進行顯式實體連接的需要。 除此之外,如果需要,您可以定義級聯刪除,即,如果刪除了一個部門,您可能希望刪除與其關聯的所有類別組。
除此之外,從建模的角度明確地分離域可能是可取的。 您可能希望一個部門被隔離,即對連接到它的對象一無所知。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.