使用:Hibernate 4
在存在FetchType.Eager映射的父子关系中,我注意到Hibernate会随时加载父实体,并对子进行EntityManager.find。这似乎有点浪费。父元素的“幕后”加载会在持久化上下文中产生额外的SELECT和额外对象。此外,它forces the app to address the parent-child association when removing a child。
为什么Hibernate会这样做?这是JPA规范的强制要求吗?
答案 0 :(得分:0)
它来自规范,在加载实体时必须获取具有eager fetch策略的持久属性:
如果所有属性都包含,则认为实体已加载 FetchType.EAGER - 无论是明确指定还是默认 - (包括 已加载关系和其他集合值属性) 从数据库或由应用程序分配。属性与 可能已加载或未加载FetchType.LAZY。