修改第一级缓存的记录,我知道当我们做saveorupdate时,我们需要调用flush()来刷新缓存,以便后续的数据库选择查询。因此,对于使用休眠的应用程序,我们不应该通过使用DB-GUI修改记录/删除记录,而不会通过休眠,因为select会因为缓存而查询错误的结果。正确?一级休眠缓存,直接在DB
0
A
回答
3
不正确。第一级缓存始终与自身保持一致,并与该会话中进行的更新保持一致。会议结束后,所有剩余的更新都会自动刷新,您很少必须自己拨打flush()
。
此外,第一级高速缓存只持续hibernate会话期间(通常只持续几个SQL语句,通常持续时间不到一秒),因此对数据库直接进行的任何更新都将会体现在下一次开始的hibernate会话中。
1
想象一下,如果FlushMode设置为Auto,则在进行任何可能已受影响的HQL或条件查询之前,应刷新它。如果您正在进行SQL查询(或者您在进行HQL查询并且FlushMode不是自动的),则需要刷新,否则当发生SQL查询时,更改不会反映在数据库中。
此外,如果您未使用事务,则需要在处理会话之前调用flush。
看看这个https://www.hibernate.org/hib_docs/v3/api/org/hibernate/FlushMode.html
相关问题
- 1. 休眠:一级缓存
- 2. 休眠:batch_size?二级缓存?
- 3. 休眠二级缓存
- 4. 休眠二级缓存
- 5. 休眠缓存级别1
- 6. 使用休眠一级缓存
- 7. 休眠二级缓存,一对多
- 8. 休眠 - 一级缓存和HQL
- 9. 休眠第一级高速缓存
- 10. 休眠一级高速缓存
- 11. 新手休眠一级缓存混淆
- 12. 休眠缓存
- 13. 休眠二级缓存和关联
- 14. 设置休眠第二级缓存
- 15. 共享nHibernate和休眠二级缓存
- 16. 休眠:麻烦启用二级缓存
- 17. 休眠二级缓存示例
- 18. Spring-Boot - 激活休眠二级缓存
- 19. 休眠二级缓存更新
- 20. 休眠二级缓存了解
- 21. 休眠4.3.0 2级缓存配置
- 22. 休眠二级缓存问题
- 23. 休眠二级缓存的性能ehcache
- 24. 休眠第二级高速缓存&JUnit
- 25. 休眠Session.multiLoad二级缓存问题
- 26. 休眠OGM和Hibernate OGM一级和二级缓存
- 27. 休眠查询缓存和二级缓存
- 28. 休眠第二级缓存和一对一的关系
- 29. 休眠二级缓存一对一不起作用
- 30. 休眠使联接保存级联
对于二级缓存怎么样。我敢肯定,如果我直接在数据库中修改记录,hibernate应用程序仍然会从缓存中重新获取而不知道它? – cometta 2009-12-01 09:59:32
是的,对L2高速缓存来说可能是正确的,但是你的问题是关于L1(会话)高速缓存。区分两者非常重要,行为是非常不同的。 – skaffman 2009-12-01 10:00:27
而'CacheMode'就是这个。 – 2009-12-01 10:02:36