【发布时间】:2011-10-13 18:14:30
【问题描述】:
我有一个使用 session.save(object) 获得的持久休眠对象
从那以后我改变了它。
我想执行session.evict(object) 来节省内存,因为我已经完成了对象。
evict()here 的文档指出,对对象的更改将不会被保留。换句话说 - evict 会导致我丢失我对对象所做的更改。
我可以致电session.flush(),但这会刷新所有更改。
如何在驱逐之前持久化对单个持久对象所做的更改?
【问题讨论】:
-
Hibernate 不是可以随时保存对持久对象的更改吗?我的意思是,关于你反对使用 flush() 的论点,也许你不想保存的更改已经保存了......
-
@SJuan76 我可以在这个假设上押注我的生产代码吗? “随时”让我担心——它们可以随时保存,或者至少在
session.flush()。但是如果我在两者之间驱逐......驱逐者会在对象被驱逐之前刷新它吗? -
为什么不使用无状态会话开始
标签: java hibernate session memory-management