• Hibernate二级缓存的并发访问策略和常用插件

    本节主要介绍 Hibernate 二级缓存的并发访问策略和常用的四种插件。

    二级缓存的并发访问策略

    两个并发的事务同时访问持久层缓存中的相同数据时,可能会出现各类并发问题,所以也需要采用必要的隔离措施解决这些问题。

    由于在二级缓存中也会出现并发问题,因此在 Hibernate 的二级缓存中,可以设定以下四种类型的并发访问策略,以解决这些问题。每一种访问策略对应一种事务隔离级别,具体介绍如下:

    1)只读型(Read-Only)

    提供 Serializable 事务隔离级别,对于从来不会被修改的数据,可以采用这种访问策略。

    2)读写型(Read-write)

    提供 Read Committed 事务隔离级别,对于经常读但是很少被修改的数据,可以采用这种隔离类型,因为它可以防止脏读。

    3)非严格读写(Nonstrict-read-write)

    不保证缓存与数据库中数据的一致性,提供 Read Uncommitted 事务隔离级别,对于极少被修改,而且允许脏读的数据,可以采用这种策略。

    4)事务型(Transactional)

    仅在受管理环境下使用,它提供了 Repeatable Read 事务隔离级别。对于经常读但是很少被修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读。

    二级缓存的常用插件

    Hibernate 二级缓存需要通过配置二级缓存的插件才可以正常使用,常用的插件有四种,具体如下:

    1)EHCache

    可作为进程范围内的缓存,存放数据的物理介质可以是内存或硬盘,对 Hibernate 的查询缓存提供了支持。

    2)OpenSymphony OSCache

    可作为进程范围内的缓存,存放数据的物理介质可以是内存或硬盘;它提供了丰富的缓存数据过期策略,并且对 Hibernate 的查询缓存提供了支持。

    3)SwarmCache

    可作为集群范围内的缓存,但不支持 Hibernate 的查询缓存。

    4)JBossCache

    可作为集群范围内的缓存,支持 Hibernate 的查询缓存。

    以上的四种缓存插件所支持的并发访问策略如表 1 所示(√代表支持)。

    表 1 缓存插件支持的并发访问策略
    二级缓存的常用插件 只读型 非严格读写 读写型 事务型
    EHCache  
    OSCache  
    SwarmCache    
    JBossCache    

    在 Hibernate 中,不是所有的数据都适合放置在二级缓存中,一般情况下,可以将很少被修改的、不重要的且不会被并发访问的数据放置在二级缓存中。

更多...

加载中...