Hibernate之缓存同步策略

缓存同步决定了数据对象在缓存中的存取规则;为了使得缓存调度遵循正确的应用级事务隔离机制,必须为每个实体类指定相应的缓存同步策略;

Hibernate中提供4种内置的缓存同步策略;

  • read-only(只读缓存)

对于不会发生改变的数据,可使用只读型缓存;

<class name="com.keith" mutable="false">

    <cache usage="read-only"/>

    ....

</class>
 
  • nonstrict-read-write(非严格读/写)

程序的并发访问下的数据同步要求不是非常严格,且数据更新操作,频率较低,可采用本项;

  • read-write(严格的读/写)

基于时间戳判定机制,实现了“read committed” 事务隔离等级,可用于对数据库同步要求严格的情况,不支持分布式缓存;

<class name="com.keith" .... >

    <cache usage="read-write"/>

    ....

    <set name="kittens" ... >

        <cache usage="read-write"/>

        ....

    </set>

</class>
 
  • transactional(事务型缓存)

必须运行在JTA事务环境中;实现了Repeatable Read事务隔离等级,有效地保障数据的合法性,适用于关键数据的缓存;目前在Hibernate内置的的Cache中,只有JBoss Cache支持事务性的Cache实现;

 

在事务型缓存中,缓存的相关操作也被添加到事务之中(此时的缓存,类似于一个内存数据库),如果由于某些原因导致事务失败,将会连同缓冲池中的缓存数据一起回滚到事务开始之前的状态;

 

 

不同的缓存实现,可支持的缓存同步策略也各不相同;

 

Cacheread-onlynonstrict-read-writeread-writetransactional
Hashtable (not intended for production use)yesyesyes
EHCacheyesyesyes
OSCacheyesyesyes
SwarmCacheyesyes
JBoss Cache 1.xyesyes
JBoss Cache 2yesyes

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值