zoukankan      html  css  js  c++  java
  • Hibernate <一级缓存>

    Hibernate缓存分为三级:

      一级缓存:基于事务级别(内存)的缓存,也可以成为session级别缓存

      二级缓存:依赖于第三方,当请求一个对象时,先在缓存里面查找,如果没有就执行查询语句

      查询缓存:基于二级缓存原理如上,将查询条件作为key,查询结果作为value放入缓存

      

      因为之前听课时,老师是三种缓存半天就讲完了,加上没有预习,所以听的云里雾里,

    现在来分别 总结一下,整理思路! 

      一级缓存:

        一级缓存是存放实体类对象的缓存,且他只允许当前线程的用户使用!

        生命周期:session关闭,一级缓存关闭

        支持一级缓存的方法:

          get,load,itetator,save

        这三种方法之间细微的区别:

          1.同一session:

            两个get查询数据时:会执行一级缓存

            两个load查询数据时:会执行一级缓存

            两个itetartor查询对象时,n+1查询一次,第二次查询时,查询id,会执行一级缓存

            (注意)两个itetartor查询普通属性时,不会执行以及缓存,因为一级缓存只会缓存实体类对象

            当对对象保存时,save然后执行查询,会执行以及缓存

          2.不同session:

            save,itetator,get,load都不会执行一级缓存,因为 不同session之间不能够共享,这里可以测试得出结论

            

       补充:大数据操作:

        当执行大数据操作时,应该考略缓存是否溢出的问题

        解决办法,添加代码

        假如我是要添加一万条数据

          我使用for循环进行添加

          这时我判断if(i % 20 ==0)

              {

                session.flush();

                //清空缓存

                session.clear();  

              }  

  • 相关阅读:
    生命的等级
    一个笑话
    第一天的日记
    接吻鱼的秘密
    [转载] 女人到底想要什么??
    纪念一塌糊涂bbs
    上海市区找到一处比较便宜的打乒乓地方:)
    朋友在奔驰公司,给我提供的F1照片,奔驰必胜!
    前台mm何处有?
    一个令我感动的女孩!
  • 原文地址:https://www.cnblogs.com/gcs1995/p/4154081.html
Copyright © 2011-2022 走看看