JPA 2.0的二級緩存
二級緩存被引進的JPA 2.0版本。JPA提供了基本的緩存操作的緩存API,而2級緩存共享狀態的實體跨越不同的持久化對象。 2級緩存的持久化對象的基礎,這是高度透明的應用程序。圖2顯示了JPA 2.0級緩存。
JPA Level 2 (L2) Cache
二級高速緩存通常是用來提高性能。但是,使用緩存可能會導致提取“陳舊”數據,因此您可以選擇禁用緩存。
- public interface Cache {
- /**
- * Whether the cache contains data for the given entity.
- */
- public boolean contains(Class cls, Object primaryKey);
- /**
- * Remove the data for the given entity from the cache.
- */
- public void evict(Class cls, Object primaryKey);
- /**
- * Remove the data for entities of the specifIEd class (and its
- * subclasses) from the cache.
- */
- public void evict(Class cls);
- /**
- * Clear the cache.
- */
- public void evictAll();
- }
JPA的2.0緩存API還提供了允許您刷新或繞過使用查詢提示,兩個實例:CacheRetrieveMode和CacheStoreMode定義緩存。您使用CacheRetrIEveMode讀取緩存數據:
- Javax.persistence.cache.retrieveMode: CacheRetrIEveMode
繞過緩存,您將直接從數據庫中獲取數據。
您使用CacheStoreMode插入或更新到緩存中,在讀取數據時從數據庫中調取實體數據,如下:
- Javax.persistence.cache.storeMode: CacheStoreMode
當CacheStoreMode不會強制一個已經緩存的項目時,從數據庫中讀取刷新的數據。
在刷新、插入或更新到緩存讀取數據時,將強制從數據庫中讀取項目緩存的刷新。
當二級緩存被啟用,第一次提取持久性提供的程序將尋找在持久化對象的實體。如果它不容易找到他們,而不是發送查詢到數據庫緩存中。
這裡是JPA的二級緩存優點和缺點:
優點:
◆避免了已經加載對象的數據庫訪問
◆對於頻繁訪問的未修改的對象讀取更快
缺點:
◆內存消耗大量的對象
◆更新陳舊的數據對象
◆需要對可擴展性差的對象進行頻繁更新
◆增加並發代碼拼寫
二級緩存最好是經常閱讀經常修改的數據,而不是至關重要的。
原文名稱:JPA 2.0 Cache Vs. Hibernate Cache: Differences in Approach
原文地址:http://www.developer.com/Java/
原文作者:Sangeetha S Nitin KL
【51CTO譯稿,非經授權謝絕轉載,合作媒體轉載請注明原文出處、作者及51CTO譯稿和譯者!】