复习 - 持久化环境相关的其他API (clear, evict, setReadyOnly)和FlushMode
复习 - 持久化环境相关的其他API (clear, evict, setReadyOnly)和FlushMode
?
前面的一些复习提到了Hiberante的自动脏数据检查功能,他的实质是会保存对象的一个快照,这个功能固然很好很强大,但是一旦数据量比较大,那么快照所需的空间也会比较大,所以我们可能需要在合适的时候进行手动的清理,来确保不会OutOfMemory
?
有下面几种可以清理的session中的对象或是阻止生成快照的方法
?
1. evict
这个方法就是将session中的对象(persist状态)清理出去,让他变成detached状态. 这样在session级别的缓存中就不会有该对象存在,如果查询同一条数据库中的数据,会重新生成查询语句加载,例子如下:
?
?默认的级别是FlushMode.AUTO, 也就是事务被提交或者发生查询之后才会将脏数据同步到db里面.