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);

  • 相关阅读:
    bt5设置IP
    flyCoding
    [Cocoa][译]苹果 Cocoa 编码规范中文版
    [BZOJ4569] [Scoi2016]萌萌哒
    BZOJ4899]记忆的轮廓
    [BZOJ1701] [Usaco2007 Jan]Cow School牛学校
    [Poi2011]Lightning Conductor
    [BZOJ4709] [Jsoi2011] 柠檬
    决策单调性优化dp 专题练习
    2369. 区间
  • 原文地址:https://www.cnblogs.com/LT0314/p/4095150.html
Copyright © 2011-2022 走看看