我需要在我的应用程序中使用一些pojo对象,所以我想知道如何启用二级缓存。到目前为止,默认情况下启用了一级缓存,我还想知道二级缓存有哪些优缺点。
答案 0 :(得分:1)
这是你需要做的:
设置以下Hibernate属性:
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</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 {
...
}
答案 1 :(得分:0)
在hibernate 3.0中引入了二级缓存
当我们从数据库加载任何对象时,然后休眠 验证该对象是否在本地缓存中可用 该特定会话[意味着第一级缓存],如果不可用 然后hibernate验证对象是否在全局缓存中可用 或工厂缓存[二级缓存],如果不可用的话 hibernate将命中数据库并从那里加载对象,并且 然后首先存储在会话的本地缓存中[第一级] 然后在全局缓存[二级缓存]
当我们从数据库加载任何对象时,然后休眠 验证该对象是否在本地缓存中可用 该特定会话[意味着第一级缓存],如果不可用 然后hibernate验证对象是否在全局缓存中可用 或工厂缓存[二级缓存],如果不可用的话 hibernate将命中数据库并从那里加载对象,并且 然后首先存储在会话的本地缓存中[第一级] 然后在全局缓存[二级缓存]
答案 2 :(得分:0)
启用JPA L2缓存,使用持久性属性
进行配置<强> javax.persistence.sharedCache.mode 强>
的值为NONE |所有| ENABLE_SELECTIVE | DISABLE_SELECTIVE |不确定的。在所有有效的JPA实现中使用此属性是常见的。