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

  • 相关阅读:
    hdu1074Doing Homework
    1088滑雪
    hdu1078FatMouse and Cheese
    hdu1058Humble Numbers
    hdu1114 Piggy-Bank
    hdu1069Monkey and Banana
    未解决的问题_c#中,最小化触发事件
    WPF Button 样式资源设置&后台生成button样式
    .NET 调用外部exe程序,出现已停止工作
    json类序列化与反序列化参考
  • 原文地址:https://www.cnblogs.com/LT0314/p/4095150.html
Copyright © 2011-2022 走看看