【问题标题】:Why does Hibernate load the parent entity when finding a child in FetchType.Eager mapping为什么 Hibernate 在 FetchType.Eager 映射中查找子实体时会加载父实体
【发布时间】:2012-06-16 18:24:02
【问题描述】:

使用:休眠 4

在有 FetchType.Eager 映射的父子关系中,我注意到 Hibernate 会在任何时候加载父实体,而 EntityManager.find 会在子实体上执行。这似乎有点浪费。父级的“幕后”加载导致持久性上下文中出现额外的 SELECT 和额外的对象。还有就是forces the app to address the parent-child association when removing a child

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

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

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

    如果所有属性都具有 FetchType.EAGER——无论是明确指定还是默认——(包括 关系和其他集合值属性)已加载 来自数据库或由应用程序分配。属性与 FetchType.LAZY 可能已加载,也可能未加载。

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 2013-10-31
      相关资源
      最近更新 更多