引用文件:
脱节 该实体具有关联的标识符,但不再与持久性上下文相关联(通常是因为持久性上下文被关闭或实例被逐出上下文)。
这是否意味着hibernate保留对所有持久化对象的引用?但那样的话就会导致记忆减退。
或者,它意味着该实体有一个与数据库中的实体相对应的id,然后得出两个结论: 1)只能在数据库中进行检查。2)如果约三分之一的实体将实体从数据库中删除,则分离实体可能会成为临时实体。
发布于 2018-01-24 15:52:26
当第一次使用新()运算符在应用程序中创建实体时,它仍然处于瞬态状态,当您通过调用Session.save()方法将其与会话关联时,.It可以移动到持久状态。当您关闭()会话或从会话中驱逐该对象时,它移动到分离状态。您可以通过调用Session.update()或Session.saveOrUpdate()方法再次将分离的对象移动到持久状态。
发布于 2018-02-22 11:46:37
我没有在文档中找到任何关于这件事的东西,但我相信它确实追踪了分离的实体.例如,根据JPA规范,当一个实体被获取时(但它的惰性关系不是).如果您分离该实体,然后再次合并它,它将考虑卸载的关系,但是如果您将关系设置为空,那么在合并之后,它也将被设置为空.所以如果它不保存分离的记录,它会有什么区别.cascade.MERGE行为中也有一些场景可能说明它保存了以前分离的实体的记录.这也是我所期望的,没有文档
发布于 2020-04-06 03:06:31
saveOrUpdate()执行以下操作: 如果该对象已在此会话中持久存在,则不执行任何操作。 如果与会话关联的另一个对象具有相同的标识符,则引发异常。 如果对象没有标识符属性,请保存()它 如果对象的标识符具有分配给新实例化对象的值,则保存()它 如果对象由or版本化,而version属性值是分配给新实例化对象的相同值,则保存()它 否则,更新()对象
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html#objectstate-saveorupdate
当使用Spring时,该策略几乎是保存的。
https://stackoverflow.com/questions/48426067
复制相似问题