首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate如何区分瞬态实体和分离实体?

Hibernate如何区分瞬态实体和分离实体?
EN

Stack Overflow用户
提问于 2018-01-24 15:28:23
回答 4查看 1.4K关注 0票数 2

引用文件:

脱节 该实体具有关联的标识符,但不再与持久性上下文相关联(通常是因为持久性上下文被关闭或实例被逐出上下文)。

这是否意味着hibernate保留对所有持久化对象的引用?但那样的话就会导致记忆减退。

或者,它意味着该实体有一个与数据库中的实体相对应的id,然后得出两个结论: 1)只能在数据库中进行检查。2)如果约三分之一的实体将实体从数据库中删除,则分离实体可能会成为临时实体。

EN

回答 4

Stack Overflow用户

发布于 2018-01-24 15:52:26

当第一次使用新()运算符在应用程序中创建实体时,它仍然处于瞬态状态,当您通过调用Session.save()方法将其与会话关联时,.It可以移动到持久状态。当您关闭()会话或从会话中驱逐该对象时,它移动到分离状态。您可以通过调用Session.update()或Session.saveOrUpdate()方法再次将分离的对象移动到持久状态。

票数 0
EN

Stack Overflow用户

发布于 2018-02-22 11:46:37

我没有在文档中找到任何关于这件事的东西,但我相信它确实追踪了分离的实体.例如,根据JPA规范,当一个实体被获取时(但它的惰性关系不是).如果您分离该实体,然后再次合并它,它将考虑卸载的关系,但是如果您将关系设置为空,那么在合并之后,它也将被设置为空.所以如果它不保存分离的记录,它会有什么区别.cascade.MERGE行为中也有一些场景可能说明它保存了以前分离的实体的记录.这也是我所期望的,没有文档

票数 0
EN

Stack Overflow用户

发布于 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://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.entity-persistence.saving-entites.strategies

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48426067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档