当前位置: 首页 > 面试题库 >

休眠:evict()一个持久对象,同时存储其更改

蓝星辰
2023-03-14
问题内容

我有使用获取的持久性hibernate对象 session.save(object)

从那以后我改变了它。

我想执行session.evict(object)以节省内存,因为我已经完成了该对象。

evict()
此处的文档指出,该对象的更改将不会保留。换句话说-
逐出会使我丢失对对象所做的更改。

我可以打电话,session.flush()但是那会清空所有更改。

在逐出之前,如何保持对单个持久对象所做的更改?


问题答案:

呼叫session.save(object)session.saveOrUpdate(object),然后您可以根据需要呼叫evict。但是,您必须先刷新会话,然后再执行此操作。出于充分的原因,该会话被设计为基于工作单元的界面-
如果没有此功能,事务性语义将是一场灾难。如果您需要刷新单个实体而不刷新同一会话中的其他实体,则需要重新考虑工作单元。



 类似资料:
  • 问题内容: 我对Hibernate还是很陌生,一直在尝试确定它将为您做什么以及需要您做什么。 最重要的是处理一个对象,该对象具有数据库中尚不存在的依赖项。例如,我有一个Project对象,其中包含一个Manufacturer字段,该字段接受Manufacturer对象作为其值。在数据库中,我有一个带mfr_id列的产品表,该列是对Manufacturers表的引用(一种相当典型的单向一对多关系)。

  • 创建新的Shelf # shelve_create.py import shelve with shelve.open('test_shelf.db') as s: s['key1'] = { 'int': 10, 'float': 9.5, 'string': 'Sample data', } # shelve_existing

  • 我的CN1应用程序在这里生成文件filesystemstorage.getinstance().getapphomePath()。我可以正确地读/写那里的文件。 此文件夹名类似于:- 我如何保证这部分保持不变?谢谢你的帮助。

  • 问题内容: 我用hibernate映射的对象具有奇怪的行为。为了知道对象为何表现异常,我需要知道是什么使该对象变脏了。有人可以帮我提示吗? 该对象是Java / Spring上下文中的Java类。因此,我希望针对Java平台的答案。 编辑:我想获得对Hibernate脏状态的访问以及它如何在连接到会话的对象上更改。我不知道一段代码会对您有什么帮助。 至于实际的问题:在由Spring Transac

  • 问题内容: JodaTime有一个提供Hibernate持久性的库。最近,我开始研究Joda-Money,开始了解如何使用hibernate来保持这种状态,而我看不到任何库。 有什么建议么? 问题答案: 好吧,我把你的意见,并炮制了钱的自定义类型为乔达库中的定义,作为参考的人可以看看它在这里,在这里使用和测试自定义类型在这里

  • 问题内容: 我有一个数据库视图,该视图产生的结果集没有真正的主键。我想使用Hibernate / Persistence将结果集映射到Java对象上。当然,因为没有PK,所以我不能用修饰任何字段。 部署时,Hibernate抱怨缺少该组件。我该如何解决? 问题答案: 如果存在使行唯一的列组合,请围绕列组合建模主键类。如果没有,您基本上就不走运了-但您应该重新检查视图的设计,因为它可能没有意义。 有