hibernate一二级缓存

hibernate缓存分为:一级缓存和二级缓存

Session缓存:保存持久化对象

SessionFactory:保存配置文件中的元数据和根据这些元数据推出的预定义的SQL语句

一级缓存:事务级别的缓存,即session缓存,里面存放的是持久化对象,它仅能被当前事务访问。

二级级存:进程级别或群集级别缓存:这里面存放的可以是关联的持久化对象,也可以是持久化对象的散装数据,它能被当前进程的所有事务访问。当里面存放的是关联的持久化对象,当不同的事务访问这些对象时,就会产生并发的几类问题,所在不提倡这种存放形式。当访问持久化对象的散装数据时,每个事务会根据这些散装对象重新组装持久化对象,所在不同的事务之间会获的不同的持久化对象,也就是说在组装完成后,对这些对象的访问不会存在并发问题,它的并发问题被移置到了获的散装数据的范围。在获取散装数据时,为了保证获取正确的数据,所以会存在并发问题。

为了解决二级缓存的并发问题,hibernate提供了4种访问策略:

1.事务型(Repeatable Read):仅在受管理的环境中适用。适用于经常被读,但很少被修改的数据,可以防止脏读和不可重复读。

2.读写型(Read Commit):仅在非集群环境中适用。适用于经常被读,但很少被修改的数据,可以防止脏读。

3.非严格读写:不保证缓存中的数据和数据库中的数据的一致性。必须为它设置过期时间,适用于极少被修改,偶尔允许脏读。

4.只读型:适用于从不会被修改的数据。

这四种策略中,事务型的隔离级别最高,只读型最低,在读写二级缓存只的数据时,如果经常被修改,则需要的隔离级别就越高,但并发效率就越低,因此只有满足以下条件的数据才适合存放到二级缓存中:

1.很少被修改
2.不是很重要的数据,偶尔允许出现并发问题。
3.不会被并发访问的数据
4.参考数据

对于以下类型的数据不适合存放到二级缓存中:

1.经常被修改
2.财务数据,不允许出现并发访问。
3.与其他应用共享的数据。因为使用了二级缓存的hibernate应用与其他应用共享数据,当其他应用修改了数据,hibernate无法保证与数据库中数据的一致性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值