Hibernate中get方法和load方法的区别

news/2024/7/5 1:57:41

  一、get和load方法都是根据id去获得对应数据的,但是获得机制不同:如果使用get方法,hibernate会去确认该id对应的数据是否存在,它首先会去session中去查询(session缓存其实就hibernate的一级缓存),如果没有,再去二级缓存中去查询,如果再没有,就去数据库中查询,仍然没有找到的话,就返回null

  而使用load方法的话,hibernate会认定该id对应的数据一定存在,它也会先去session缓存中去查找,如果没有找到,hibernate会根据lazy属性值来确定是否使用延迟加载。如果lazy=‘true’ ,就使用延迟加载,返回该代理对象,等到真正访问到该对象的属性时才会去二级缓存中查询,如果没有,再去数据库中查询,如果还没有,就抛出org.hibernate.ObjectNotFoundException异常。如果lazy='false' 则不使用延迟加载,这是load的访问机制就和get一样了。

  二、对于load和get方法返回类型:虽然好多书中都这么说:“get()永远只返回实体类”,但实际上这是不正确的,get方法如果在 session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load方法使用过,或者被其他关联对象延迟加载过,那么返回的还是 原先的代理对象,而不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数据库来加载数据,但是 返回的还是代理对象,只不过已经加载了实体数据。

  总之对于get和load的根本区别,一句话,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

  疯狂软件学习中心是一所Java人才的专业机构,它最核心的价值在于能让应届大学毕业生与企业无缝对接,课程设计与企业需求高度结合,使其在进入企业后能立即上手。

  学真正Java技术,当然选疯狂软件Java培训机构,打造国内高级Java人才

  疯狂软件Java培训优势

  1. Java是世界第一大编程语言,市场占有率达20%。

  2.广州最专业Java培训机构,多年教学经验。

3.学员技术牛就业率最好,就业薪资都在5000以上。

  4.疯狂软件Java培训课程以项目实战带动教学,上课打破传统课堂模式,以实训项目贯穿教学,带领学生一起做企业真实项目。

  疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。

转载于:https://www.cnblogs.com/gojava/p/3559125.html


http://lihuaxi.xjx100.cn/news/275946.html

相关文章

接口的多继承与包

接口: Java里类与类之间是只能单继承的,但是接口和接口之间可以多继承,而且一个类可以实现N个接口。例如: 实现多个接口: 包: 包类似于文件夹,用于分类避免文件混淆,保持工程文件的整…

一个有趣的案例 | 页面扭曲矫正

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自:AI算法与图像处理前言今天要分享的内容是关于页面扭曲矫正的内容,为了让大家有一个相关的概念,下面先预览一下效果图页面扭曲…

使用 ThreadLocal 一次解决老大难问题!

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试资料作者:鲁毅juejin.im/post/5e0d8765f265da5d332cde441.ThreadLocal的使用场景1.1 场景1每个线程需要一个独享对象(通常是工具类,典型需要使用的类有SimpleDate…

flutter 刷脸_GitHub - nnnggel/baidu_face_plugin: 百度人脸识别和活体检测 Flutter 插件(目前版本仅支持 Android)...

baidu_face_plugin百度人脸识别和活体检测 Flutter 插件(目前版本仅支持 Android)使用方式注册百度开发者账号前往 百度开发者账号 进行注册。申请并配置license1 . 登录 控制台,前往 全局->人工智能->人脸识别->人脸识别 - 离线采集SDK管理2 . 新建授权&a…

深度神经网络模型训练中的 tricks(原理与代码汇总)

↑ 点击蓝字 关注视学算法作者丨Jack Stark来源丨机器学习小王子原文链接|https://mp.weixin.qq.com/s/ujr8XubG9jpvM-zOGcZxRw编辑丨极市平台极市导读 本文总结了多种图像分类任务中的重要技巧,对于目标检测和图像分割等任务,也起到了不错的…

C语言单链表读入文件表妹,电面|LOFTER(乐乎) - 让兴趣,更有趣

【快速排序——详解】(上)在介绍快速排序之前我们必须要了解一下冒泡排序下面我就简单的介绍一下冒泡排序(一) 冒泡排序例如:现有一个10个元素的数组并对其进行“冒泡排序”。那么总共比较了多少次呢?答:总共45次排序过程大体为如…

倒计时 3 天!「2019 嵌入式智能国际大会」全日程大公开!

立即抢购:https://t.csdnimg.cn/otBk还有3天,大伙期待的「2019嵌入式智能国际大会」正式开幕了!2019年12月6日-7日,我们在深圳市人才研修院见!大会以“万物互联泛在智能”为主题,邀请30位海内外顶级专家作为…

CV新手避坑指南:计算机视觉常见的8个错误

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自:机器学习实验室人类并不是完美的,我们经常在编写软件的时候犯错误。有时这些错误很容易找到:你的代码根本不工作,…