zoukankan      html  css  js  c++  java
  • 笔记:Hibernate 查询缓存

    Hibernate 的一级缓存和二级缓存都是对实体进行缓存,他不会缓存普通属性,如果想对普通熟悉进行缓存,可以考虑使用查询缓存。

    对于查询缓存来说,他缓存的Key就是查询所用的 HQL 或者 SQL 语句,查询缓存不仅要求使用的语句相同,还要求参数必须一致,查询缓存默认是关闭的,为了开启查询缓存,需要修改 Hibernate.cfg.xml 配置文件,增加如下配置:

    <property name="hibernate.cache.use_query_cache">true</property>

    要使用查询缓存还必须在调用查询时,使用 setCacheable 方法开启缓存,示例代码如下:

       

    public static void main(String[] args) {

    Session curSession = hibernateUtils.openSession();

    try {

       

    // 第一次查询,启用了缓存

    List list = curSession.createQuery("SELECT trm FROM TransitRecordModel trm").setCacheable(true).list();

    System.out.println("Query Size=" + list.size());                

    // 第二次查询,启用了缓存,因此从缓存读取,不发起数据库查询操作

    list = curSession.createQuery("SELECT trm FROM TransitRecordModel trm").setCacheable(true).list();

    System.out.println("Query Size=" + list.size());

    } finally {

    if (curSession != null) {

    curSession.close();

    }

    }

    }

       

    查询缓存和二级缓存的交互 通过 setCacheMode 方法来设置,有如下几种类型:

    1. CacheMode.NORMAL:正常模式(默认),Session会向二级缓存中读取和写入数据。
    2. CacheMode.IGNORE:忽略模式,Session不会向二级缓存读取,也不会写入数据。
    3. CacheMode.GET:Session对二级缓存只读不写。
    4. CacheMode.PUT:Session对二级缓存只写不读。
    5. CacheMode.REFRESH:刷新模式,Session不会从二级缓存中读取数据,但会向其中写入从数据库读取的数据。和PUT的区别在于REFRESH会忽略配置文件中的hibernate.cache.use_minimal_puts属性,强制刷新二级缓存中的所有数据。

       

       

  • 相关阅读:
    让外部网络访问K8S service的四种方式
    Kubernetes 针对资源紧缺处理方式的配置
    基于Prometheus,Alermanager实现Kubernetes自动伸缩
    ubuntu16.04下python2、python3环境选择与python升级(pip版本切换)
    学习资源集锦
    tensorflow :ckpt模型转换为pytorch : hdf5模型
    SoftMax多分类器原理及代码理解
    玩转树莓派3
    keras_基本网络层结构(2)_卷积层
    keras_基本网络层结构(1)_常用层
  • 原文地址:https://www.cnblogs.com/li3807/p/6358391.html
Copyright © 2011-2022 走看看