如何在Hibernate中启用二级缓存

时间:2014-12-08 12:32:53

标签: java hibernate caching jpa orm

我需要在我的应用程序中使用一些pojo对象,所以我想知道如何启用二级缓存。到目前为止,默认情况下启用了一级缓存,我还想知道二级缓存有哪些优缺点。

3 个答案:

答案 0 :(得分:1)

这是你需要做的:

  1. 设置以下Hibernate属性:

    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
    
  2. 在类路径中添加ehcache.xml文件,其中包含缓存配置条目:

    <cache name="com.mycompany.MyEntity"
       maxElementsInMemory="50"
       eternal="true"
       overflowToDisk="false"
       timeToIdleSeconds="600"
       timeToLiveSeconds="600"
       diskPersistent="false"
       memoryStoreEvictionPolicy="LRU"       
    />
    
  3. 为每个实体定义缓存类型:

    @Entity
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    public class MyEntity {
            ...
    }
    

答案 1 :(得分:0)

  

在hibernate 3.0中引入了二级缓存

     

当我们从数据库加载任何对象时,然后休眠   验证该对象是否在本地缓存中可用   该特定会话[意味着第一级缓存],如果不可用   然后hibernate验证对象是否在全局缓存中可用   或工厂缓存[二级缓存],如果不可用的话   hibernate将命中数据库并从那里加载对象,并且   然后首先存储在会话的本地缓存中[第一级]   然后在全局缓存[二级缓存]

     

当我们从数据库加载任何对象时,然后休眠   验证该对象是否在本地缓存中可用   该特定会话[意味着第一级缓存],如果不可用   然后hibernate验证对象是否在全局缓存中可用   或工厂缓存[二级缓存],如果不可用的话   hibernate将命中数据库并从那里加载对象,并且   然后首先存储在会话的本地缓存中[第一级]   然后在全局缓存[二级缓存]

答案 2 :(得分:0)

启用JPA L2缓存,使用持久性属性

进行配置

<强> javax.persistence.sharedCache.mode

的值为NONE |所有| ENABLE_SELECTIVE | DISABLE_SELECTIVE |不确定的。在所有有效的JPA实现中使用此属性是常见的。