一尘不染

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

hibernate

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

从那以后我改变了它。

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

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

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

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


阅读 193

收藏
2020-06-20

共1个答案

一尘不染

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

2020-06-20