【问题标题】:How to enable second level cache in Hibernate如何在 Hibernate 中启用二级缓存
【发布时间】:2015-02-06 02:47:05
【问题描述】:

我的应用程序中需要一些 pojo 对象,所以我想知道如何启用二级缓存。到现在默认一级缓存是开启的,我也想知道二级缓存有什么优缺点。

【问题讨论】:

标签: java hibernate caching jpa orm


【解决方案1】:

这是你需要做的:

  1. 设置以下 Hibernate 属性:

     <property name="hibernate.cache.use_second_level_cache">true</property>
     <property name="hibernate.cache.provider_class">ehcache</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 {
             ...
     }
    

【讨论】:

    【解决方案2】:

    二级缓存在hibernate 3.0中引入

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

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

    【讨论】:

      【解决方案3】:

      JPA L2 缓存已启用,使用持久性属性进行配置

      javax.persistence.sharedCache.mode

      其值为 NONE |全部 | ENABLE_SELECTIVE | DISABLE_SELECTIVE |未指定。在所有有效的 JPA 实现中都可以使用此属性。

      【讨论】:

        猜你喜欢
        • 2015-10-13
        • 1970-01-01
        • 2015-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 2012-08-03
        • 2014-11-28
        相关资源
        最近更新 更多