二级缓存ehcache的使用方法

简介:

EhcacheSessionFactory间的缓存,是二级缓存

Session间的缓存是一级缓存,这个由hibernate自动处理,不必去管

Ehcache是事务级别的缓存

如果是进程级别的缓存的话用 oscache

还有集群范围内的缓存使用别的框架来处理

适用条件,在查询的时候,起作用,增删改不起作用。

1 导入第三方ehcache包

2 在hibernate.cfg.xml添加

  <property name="hibernate.cache.provider_class">

   org.hibernate.cache.EhCacheProvider

</property>

3

 在对应的 pojo类中添加 缓存标签

<cache usage="read-write"/>

<cache usage="read-write"/>

主键id放在上面两个标签之间

记得一定要加上,不然的话是不起作用的

4ehcache.xml放在 src目录下 这个文件在hibernate官方下载包里的下面就有

<ehcache>

    <diskStore path="c://ehcache/"/>

    <defaultCache

        maxElementsInMemory="10000"

        eternal="false"

        timeToIdleSeconds="120" 

        timeToLiveSeconds="120" 

        overflowToDisk="true"  

        />

       

    <!-- 设置Category类的缓存的数据过期策略 -->

    <cache name="org.qiujy.domain.cachedemo.Category"

        maxElementsInMemory="100"

        eternal="true"

        timeToIdleSeconds="0"

        timeToLiveSeconds="0"

        overflowToDisk="false"

        />

       

     <!-- 设置Category类的products集合的缓存的数据过期策略 -->

     <cache name="org.qiujy.domain.cachedemo.Category.products"

        maxElementsInMemory="500"

        eternal="false"

        timeToIdleSeconds="300"

        timeToLiveSeconds="600"

        overflowToDisk="true"

        />

       

    <cache name="org.qiujy.domain.cachedemo.Product"

        maxElementsInMemory="500"

        eternal="false"

        timeToIdleSeconds="300"

        timeToLiveSeconds="600"

        overflowToDisk="true"

        />

   

</ehcache>

5持久化层的缓存的并发访问策略

当多个并发的事务同时访问持久化层的缓存的相同数据时,会引起并发问题,必须采用必要的事务隔离措施。

在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题。因此可以设定以下四种类型的并发访问策略,每一种策略对应一种事务隔离级别。

1) 事务型(Transactional)策略:仅仅在受管理环境中适用。它提供了Repeatable Read事务隔离级别。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发问题。

2) 读写型(read-write)策略:提供了Read Committed事务隔离级别。仅仅在非集群的环境中适用。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。

3) 非严格读写型(nonstrict-read-write)策略:不保证缓存与数据库中数据的一致性。如果存在两个事务同时访问缓存中相同数据的可能,必须为该数据配置一个很短的数据过期时间,从而尽量避免脏读。对于极少被修改,并且允许偶尔脏读的数据,可以采用这种并发访问策略。

4) 只读型策略(read-only):对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。

事务型并发访问策略是事务隔离级别最高,只读型的隔离级别最低。事务隔离级别越高,并发性能就越低。

6 结果

由结果可知,虽然用了两个独立的SessionFactory(独立的事务),但是查询hql的打印语句只有一个,可见缓存成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静山晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值