[英]How to enable second level cache in Hibernate
我的應用程序中需要一些 pojo 對象,所以我想知道如何啟用二級緩存。 到目前為止默認啟用一級緩存,我也想知道二級緩存有哪些優點和缺點。
這是你需要做的:
設置以下休眠屬性:
<property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.provider_class">ehcache</property>
在類路徑中添加一個ehcache.xml文件,其中包含緩存配置條目:
<cache name="com.mycompany.MyEntity" maxElementsInMemory="50" eternal="true" overflowToDisk="false" timeToIdleSeconds="600" timeToLiveSeconds="600" diskPersistent="false" memoryStoreEvictionPolicy="LRU" />
為每個實體定義緩存類型:
@Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class MyEntity { ... }
二級緩存是在 hibernate 3.0 中引入的
當我們從數據庫加載任何對象時,hibernate 驗證該對象是否在該特定會話的本地緩存中可用 [意味着一級緩存],如果不可用,則 hibernate 驗證該對象是否在全局緩存中可用或工廠緩存[二級緩存],如果不可用則hibernate將命中數據庫並從那里加載對象,然后首先存儲在會話的本地緩存中[一級]然后在全局緩存中[二級緩存]
當我們從數據庫加載任何對象時,hibernate 驗證該對象是否在該特定會話的本地緩存中可用 [意味着一級緩存],如果不可用,則 hibernate 驗證該對象是否在全局緩存中可用或工廠緩存[二級緩存],如果不可用則hibernate將命中數據庫並從那里加載對象,然后首先存儲在會話的本地緩存中[一級]然后在全局緩存中[二級緩存]
啟用 JPA L2 緩存,使用持久性屬性進行配置
javax.persistence.sharedCache.mode
其值為 NONE | 所有 | ENABLE_SELECTIVE | DISABLE_SELECTIVE | 未指定。 使用此屬性在所有有效的 JPA 實現中都很常見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.