与entityManger.flush();
用于批处理的休眠文档
https://docs.jboss.org/hibernate/orm/5.0/userguide/html_single/chapters/batch/Batching.html
“当使新对象具有持久性时,请定期对会话采用flush()和clear()方法,以控制第一级缓存的大小。”
我正在研究Spring Boot数据jpa。
第一个疑问是对于Restful应用程序是否启用了一级缓存?
entityManager.flush()
可以清除二级缓存吗?
entityManger.flush()
与System.gc()
相似吗?
答案 0 :(得分:3)
1)一级缓存是针对每个已启动的事务创建的,因此每种事务方法都始终存在该一级缓存。
2) entityManager.flush()
,不会清除二级缓存。它还不会清除一级缓存,而是强制将当前事务中所做的所有更改都推送到物理数据库中。
3)entityManger.flush()
与System.gc()
相似吗?不,所有对象仍在堆上,甚至仍由当前的持久性上下文管理。