博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate <一级缓存>
阅读量:5865 次
发布时间:2019-06-19

本文共 927 字,大约阅读时间需要 3 分钟。

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

          }  

转载于:https://www.cnblogs.com/gcs1995/p/4154081.html

你可能感兴趣的文章
非阻塞模式ServerSocketChannel 聊天室服务器端
查看>>
java学习——多线程程序设计(1)
查看>>
递归算法详细分析
查看>>
从国产浏览器更换到谷歌浏览器的心路历程
查看>>
网络爬虫
查看>>
jQuery总结03
查看>>
javascript document.cookie
查看>>
叶问【转自知数堂微信公众号】
查看>>
centos6.8 搭建zabbix被监控端
查看>>
【12-05】面试题
查看>>
js获取当前月的第一天和最后一天
查看>>
Swift笔记2
查看>>
ARCGIS二维三维互动
查看>>
WPF自定义窗体仿新毒霸关闭特效(只能在自定义窗体中正常使用)
查看>>
[09-04]数据类型转换函数
查看>>
ng-option取值问题
查看>>
MySQL汉字乱码线索整理
查看>>
APPBAR
查看>>
撸一撸腾讯的微信支付(C#)
查看>>
【12c OCP】CUUG OCP认证071考试原题解析(34)
查看>>