美文网首页
Hibernate @Cache 注解

Hibernate @Cache 注解

作者: liveaswind | 来源:发表于2016-10-07 16:04 被阅读829次

本文主要摘自Hibernate缓存,整理些要点出来

Hibernate查询缓存依赖于二级缓存。当启用查询缓存后,第一次执行查询语句时,Hibernate会把查询结果保存在二级缓存中。当再次执行查询语句时,只需从缓存中获取查询结果即可。

查询缓存适用于以下场合:
  • 经常使用查询语句
  • 很少对查询语句关联的数据库数据进行插入,删除和更新操作
查询缓存的配置
  1. 配置二级缓存
  2. 在hibernate中配置
<prop key="hibernate.cache.user_query_cache">true</prop>
  1. 调用Query, Criteria接口的setCacheable()方法

@Cache

@Cache 定义了二级缓存策略和缓存范围

@Cache(
    CacheConcurrencyStrategy usage(); //1
    String region() default "";      //2
    String include() default "all";  //3
  1. usage: 当前缓存策略(NONE, READ_ONLY, NONSTRICT_READ_WRITE, TRANSACTIONAL)。
  • read-only: 只读缓存

    如果你的应用程序只需读取一个持久化类的实例,而无需对其修改, 那么就可以对其进行只读缓存

  • read-write: 读写缓存

如果应用程序需要更新数据,那么使用读/写缓存比较合适。 如果应用程序要求“序列化事务”的隔离级别(serializable transaction isolation level),那么就决不能使用这种缓存策略

  • nonstrict-read-write: 不严格读写缓存

如果应用程序只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离,那么比较适合使用非严格读/写缓存策略。

  • transactional :事务性缓存

Hibernate 的事务缓存策略提供了全事务的缓存支持,例如对 JBoss TreeCache 的支持。这样的缓存只能用于 JTA 环境中,你必须指定为其 hibernate.transaction.manager_lookup_class属性。

  1. region: 可选参数,指定二级缓存的去域名,默认为类或者集合的名字.
  2. include: 可选参数(all, non-lazy)。all包含所有属性,non-lazy仅包含非延迟加载的属性

缓存实体

@javax.persistence.Entity
@Table(name = "PROVICE")
@Cache(usage =CacheConcurrencyStrategy.READ_ONLY)
public class Province() {
...
}

缓存集合

@javax.persistence.Entity
@Table(name = "PROVICE")
@Cache(usage =CacheConcurrencyStrategy.READ_ONLY)
public class Province() {//省份对象
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "cityId")
    @Cache(usage = CacheConcrrencyStrategy.READ_ONLY)
    private Set<City> cities; //省份对应城市
}

此时在访问province.cities时,Hibernate 只缓存了city的OID,因此在实际查询过程中还是需要执行
select * from city where cityid = ?

为了避免该问题,可以为City对象同样配置二级缓存

@javax.persistence.Entity
@Table(name = "CITY")
@Cache(usage =CacheConcurrencyStrategy.READ_ONLY)
public class City() {//城市对象
...
}

相关文章

  • Hibernate @Cache 注解

    本文主要摘自Hibernate缓存,整理些要点出来 Hibernate查询缓存依赖于二级缓存。当启用查询缓存后,第...

  • Hibernate注解(一)类级别注解

    1、Hibernate注解简介 2、JPA与Hibernate的关系 3、Hibernate注解分类 4、@Ent...

  • Hibernate注解

    注解 同样的,Hibernate也是支持使用注解方式的。创建hibernate应用程序时有许多注解可用,如@Ent...

  • Redis-Spring Cache

    零、本文纲要 一、Spring Cache介绍 Spring Cache Spring Cache常用注解 二、 ...

  • 框架注解解析

    一,通用注解 二,Spring 三,mybatis/mybatis-plus注解 四,hibernate注解

  • JPA 注解学习

    最近学习hibernate注解形式配置POJO类,将注解的解析记下来,以备以后使用。 例1. Hibernate ...

  • 适配器模式

    简书 许乐转载请注明原创出处,谢谢! Hibernate提供了org.hibernate.cache.CacheP...

  • 如易云揭秘1-框架(cache)

    Hibernate老鸟的话,对于Hibernate cache的精妙实现应该都是非常了解,即便不了解其实现原...

  • springBoot DTO验证注解文档

    引用自:https://www.yunliantaida.com Hibernate验证注解 注解说明@Null ...

  • Hibernate基本用法

    1、Hibernate注解 2、HQL查询 执行HQL查询的步骤:1、获得 Hibernate Session 对...

网友评论

      本文标题:Hibernate @Cache 注解

      本文链接:https://www.haomeiwen.com/subject/jvpyyttx.html