修改第一級緩存的記錄,我知道當我們做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