我看到很多文章說在Hibernate中使用二級緩存可以提高性能,但對使用它的缺點沒有太多的瞭解。我不希望將二級緩存視爲一種神奇的「爲了獲得更好的性能而在這裏啓用!」按鈕。任何人都可以描述使用二級緩存的缺點,以便我能意識到使用它的含義嗎?使用Hibernate的二級緩存有什麼缺點?
4
A
回答
3
缺點:
- 集羣部署將需要一種方法來保持高速緩存同步。我們已經使用了一個簡單的EhCache和我們自己的無效例程,並利用JGroups(努力工作 - 推薦使用它)並使用Infinispan。如果您使用infinispan路由,則需要啓用XA事務。這將需要XA驅動程序和事務管理器,無論是由您的應用程序服務器提供的,還是您必須使用Atomikos。
- 存在邊界情況(例如多對一或一對多情況),其中實體的更新/刪除未正確反映在集合中。例如:http://www.tikalk.com/java/forums/hibernate-second-level-cache-collection-eviction)
5
在其他答案引用的點似乎有效。然而,對我而言,主要缺點是別的:
性能降低。是的,緩存不需要提供更好的性能。 Hibernate需要做額外的工作來存儲和更新緩存。如果緩存的實體頻繁更改並且不經常查詢它們,則啓用緩存只會增加不必要的額外負擔。
緩存失效。如果您的應用程序具有通過更新方式執行更新的邏輯(而不是通過更新實體)(例如,直接SQL更新,通過其他應用程序更新,批量HQL更新(我不太確定最後一種情況:P)),Hibernate將不知道實體被改變。因此,當您進行查詢時,您仍然會在更新之前獲取圖像。
+0
謝謝。你們兩個都提供了很好的答案,但我已經將kabram的答案標記爲已接受,因爲你已經有4,340個代表:)。 –
相關問題
- 1. Hibernate的二級緩存使用ecache
- 2. Hibernate優化,使用二級緩存?
- 3. 何時使用Hibernate緩存(第二級)?
- 4. 什麼是Hibernate中的一級和二級緩存?
- 5. 使用緩存控制有什麼缺點:無存儲?
- 6. Hibernate的二級緩存+的Ehcache問題
- 7. 爲什麼不加入查詢命中Hibernate二級緩存?
- 8. Hibernate 3.2.0中的二級緩存final
- 9. 清除Hibernate的二級緩存
- 10. 清除Hibernate的二級緩存
- 11. Hibernate的二級緩存 - 打印結果
- 12. orm.xml中的Hibernate二級緩存?
- 13. 二級緩存 - 爲什麼不緩存所有實體?
- 14. Hibernate 3.5.5,二級緩存配置
- 15. spring + hibernate + infinispan作爲第二級緩存
- 16. Spring + Hibernate with Hazelcast作爲二級緩存
- 17. Hibernate + Spring Data JPA二級緩存XML
- 18. Redis作爲Hibernate二級緩存
- 19. 使用JBoss 4.2上的JPA啓用Hibernate二級緩存
- 20. 配置Hibernate緩存的麻煩 - org.hibernate.cache.NoCachingEnabledException:二級緩存未啓用使用
- 21. Hibernate第二級緩存和Spring 3.1的@Cacheable的合適用例是什麼?
- 22. Apache-Ignite集成爲Hibernate第二級緩存:查看點燃緩存的最佳方法是什麼?
- 23. Hibernate - 如何驗證二級緩存的使用情況?
- 24. 如何在JPA中使用Hibernate的二級緩存?
- 25. 使用一個Hibernate映射的多個二級緩存設置
- 26. 在集羣環境中使用JBoss緩存hibernate的二級緩存
- 27. HIbernate 2級緩存
- 28. 從Hibernate二級緩存中檢索所有Foo而沒有查詢緩存?
- 29. 我應該使用hibernate二級緩存嗎?
- 30. 你是否總是在Hibernate中使用二級緩存?
謝謝。你們兩個都提供了很好的答案,但是我已經將你的答案標記爲已接受,因爲Adrian已經有4,340個代表了:)。 –