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()相似吗?不,所有对象仍在堆上,甚至仍由当前的持久性上下文管理。

09-27 14:01