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

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

  Hibernate的一级缓存其实就是Session内置的一个Map,用来缓存它操作过的实体对象,对象的主关键字ID是Map的key,实体对象就是对应的值。所以,一级缓存是以实体对象为单位进行存储的,访问时也是以实体为单位的(直接访问属性是不能使用缓存的),并且要求使用主关键字ID来进行访问。  一级缓存是由Session提供的,所以它只存在于Session的生命周期中,当程序调用save(),update(),saveorupdate()等方法以及调用查询接口list,filter,iterate时,如果session缓存中还不存在相应的对象,Hibernate会把该对象加入到一级缓存中,当Session关闭的时候该Session所管理的一级缓存也会立即被清除。当程序调用get(),load(),iterate(查询实体对象才支持一级缓存,查询普通属性则不支持一级缓存)时,Hibernate会先到缓存中去拿,如果缓存中已经存在目标对象,则直接拿来而不再查询数据库,否则,必须发出查询语句到数据库中查。  如果数据量特别大,我们一般考虑采用jdbc实现,因为它不用把大批量的数据事先加载到内存中,然后再进行更新与修改。所以不会消耗大量内存。如果jdbc也不能满足要求可以考虑采用数据本身的特定导入工具等其它办法。

 

转载于:https://www.cnblogs.com/jun1019/p/5260114.html

你可能感兴趣的文章
11.使用 package.json
查看>>
idea如何设置类头注释和方法注释
查看>>
白盒测试目录导航
查看>>
linux过滤旧文件中的空行和注释行剩余内容组成新文件
查看>>
[LeetCode] Preimage Size of Factorial Zeroes Function 阶乘零的原像个数函数
查看>>
GraphQL入门1
查看>>
C#委托的介绍(delegate、Action、Func、predicate)
查看>>
巧用Scrum与Kanban
查看>>
质量报告之我见
查看>>
微信域名weixin.com天价成交!是腾讯吗?
查看>>
C#实现远程机器管理
查看>>
Android生成带图片的二维码
查看>>
jQuery对表单、表格的操作及更多应用(下:其他应用)
查看>>
[.net 面向对象编程基础] (21) 委托
查看>>
阶乘相关问题
查看>>
ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
查看>>
Java引用类型变量
查看>>
利用window.navigator.userAgent判断当前是否微信内置浏览器
查看>>
《Programming WPF》翻译 第9章 2.选择一个基类
查看>>
IOS-整体框架类图
查看>>