【问题标题】:Entity - Does two entities retrieved from the session have same values实体 - 从会话中检索到的两个实体是否具有相同的值
【发布时间】:2016-06-16 02:21:29
【问题描述】:

在一次采访中,有人问我说您有一个处于活动状态的休眠会话,并且您从中检索了一个实体 - 客户实体。您对实体进行了一些更改,但不通过调用 em.flush 或 em.persist 将其保存到数据库中。现在您再次从数据库中检索相同的实体。会不会有你之前所做的改变?

【问题讨论】:

  • 请移除标签实体框架。我认为它将从数据库中检索实体,而无需更改
  • 好吧,当你尝试这个时发生了什么?这将是研究的第一步。

标签: java hibernate jpa


【解决方案1】:

第二次检索实体时,您会得到与第一次完全相同的实体(即e2 == e1)。因为它是同一个对象,所以它会有所有的变化。

【讨论】:

  • 我希望,我说的不是废话,但这就是我对一级缓存的理解。有两个对象代表同一个实体很容易导致太多问题。
【解决方案2】:

是的。它将拥有所有的变化。

这就是为什么它在 EntityManger 上有一个方法 refresh() 以防您想要覆盖 DB 值的更改。

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多