zoukankan      html  css  js  c++  java
  • Hibernate的三种缓存

    一级缓存

    hibernate的一级缓存是跟session绑定的,那么一级缓存的生命周期与session的生命周期一致,因此,一级缓存也叫session级缓存或者事务级缓存。

       支持一级缓存的方法有:

      query.get()

      query.load()

      query.iterate() 只支持实体对象的时候,查询普通属性是不支持的

    list方法会向一级缓存中放置数据  但是起自身不使用缓存

     管理一级缓存:

      session.clear

      session.evict(Object obj)

     在大批量数据操作的时候,如何避免一次性大量的实体数据导致内存溢出

      先flush,再clear

      如果数据量特别大,则考虑用jdbc实现,如果jdbc仍不能满足,则考虑采用数据库本身特定导入工具。

    二级缓存

      二级缓存也称为进程级缓存或者sessionfactory级的缓存,二级缓存可以被所有的session共享,二级缓存的生命周期跟sessionfactory的生命周期一致的。

    二级缓存使用(echache)

     二级缓存管理

      可使用session.setCacheMode(CacheMode.IGNORE);进行管理

    查询缓存

      其是针对普通属性结果集的缓存,对于实体对象的结果集只缓存id

      查询缓存的生命周期,当关联表的数据发生修改,那么查询缓存的生命周期结束。

      配置:

      

      使用:

      //必须手动启用查询缓存 iterate()不使用查询缓存 list会用
      query2.setCacheable(true);

  • 相关阅读:
    执行start-dfs.sh后,datenode没有启动的解决办法
    hadoop 在centos中的搭建
    MySQL 5.7的安装及主从复制(主从同步)
    CentOS7 配置免密码登陆
    关于使用maven打包如何聚合资源文件
    idea常用快捷键
    lombok的使用
    oracle 导出,导入表
    vue项目.eslintrc格式化
    vue-cli3项目关闭烦人的代码检测
  • 原文地址:https://www.cnblogs.com/LT0314/p/4095150.html
Copyright © 2011-2022 走看看