在实体之间的双向映射中(例如。
@ManyToOne
↔
@OneToMany
),对应方需要
synchronized on every change
,尤其是使用2
nd公司
级别缓存。这通常通过助手方法完成。如果
Many
部分包含许多条目,因为每次都会提取整个集合。一个简单的例子是实体
Store
其中
n
Products
鉴于
N
非常大。添加新的
Product
到
百货商店
将需要
百货商店
获取
产品
最后将其添加到集合中(请参见下面的代码示例)。
有人可能会争辩说,在建模这种关系时,最好用来自
产品
到
百货商店
但是,我们在应用程序中使用了许多JPQL查询。在JPQL中,从两侧连接实体非常方便。
在映射
@OneToMany公司
中的关系
百货商店
实体,何时
许多的
实际上意味着很多,而不仅仅是少数,只要将字段私有化,没有getter和setter,前提是整个关系都是懒洋洋地获取的?据我所知,Hibernate只需要字段来映射关系。如果集是私有的,则不应出现性能问题?
这个
产品
实体:
@Entity
@Table(name = "product")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Product {
@ManyToOne(fetch = FetchType.LAZY)
private Store store;
// setter, getter, helper methods
}
这个
百货商店
实体:
@Entity
@Table(name = "store")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Store {
@OneToMany(mappedBy = "products", fetch = FetchType.LAZY)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Product> products;
// setter, getter, helper methods
}