0

使用:休眠 4

在有 FetchType.Eager 映射的父子关系中,我注意到 Hibernate 将在任何时候加载父实体,并且 EntityManager.find 在子实体上执行。这似乎有点浪费。父级的“幕后”加载导致持久性上下文中出现额外的 SELECT 和额外的对象。此外,它会强制应用在删除 child 时解决父子关联问题

为什么 Hibernate 会这样?这是 JPA 规范要求的吗?

4

1 回答 1

0

它来自规范,必须在加载实体时获取具有急切获取策略的持久属性:

如果具有 FetchType.EAGER 的所有属性(无论是明确指定还是默认情况下)(包括关系和其他集合值属性)都已从数据库加载或由应用程序分配,则认为已加载实体。带有 FetchType.LAZY 的属性可能已加载,也可能未加载。

于 2012-06-17T14:51:11.727 回答