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

  • 相关阅读:
    mpstat 查看多核CPU负载状态
    redis pipeset发布订阅
    sqlalchemyorm学生签到 成绩记录查询系统
    ORM数据库命令操作包装实例对象学习
    Python Mysql数据库操作
    redis hash操作 list列表操作
    pymysqlsqlalchemyorm
    ss命令用来显示处于活动状态的套接字信息。
    8月20日学习日志
    8月22日学习日志
  • 原文地址:https://www.cnblogs.com/LT0314/p/4095150.html
Copyright © 2011-2022 走看看