与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()
类似吗?
最佳答案
1)一级缓存是针对每个已启动的事务创建的,因此对于每种事务方法,一级缓存始终存在。
2)entityManager.flush()
,不清除二级缓存。它还不会清除一级缓存,而是强制将当前事务中完成的所有更改推送到物理数据库中。
3)entityManger.flush()
与System.gc()
相似吗?不,所有对象仍在堆上,甚至仍由当前的持久性上下文管理。