EntityManager.flush()将清除二级缓存吗?

时间:2019-02-12 17:18:47

标签: java hibernate spring-boot jpa spring-data-jpa

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 个答案:

答案 0 :(得分:3)

1)一级缓存是针对每个已启动的事务创建的,因此每种事务方法都始终存在该一级缓存。

2) entityManager.flush(),不会清除二级缓存。它还不会清除一级缓存,而是强制将当前事务中所做的所有更改都推送到物理数据库中。

3)entityManger.flush()System.gc()相似吗?不,所有对象仍在堆上,甚至仍由当前的持久性上下文管理。