hibernate的get和load区别

特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析 算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。 阅读详情

1、延迟加载:load是true而get是false,意思就是 load采用的是延迟加载的方式 而get不是,也就是说get()采用立即加载方式,而load()采用延迟加载;,hibernate思想是 既然这个方法支持延迟加载 他就认为这个对象一定在数据库存在

2、load方法的加载过程:

                         例如:Student     stu = session.load(Student.class,stuid);执行此条程序,hibernate的执行过程:

                                    1.查询session缓存:先查一下session缓存,看看该id对应的对象是否存在
                                    2.缓存中没有这个对象 就创建个代理
                                    因为延迟加载需要代理来执行 所以就创建了个代理,ok 到此为止 这句话就执行完了,这个 并没有去数据库交互查询
                                   当你使用这个对象 比如stu.getName()或get()方法时候,此时才会触发sql语句
                                   这个时候 hibernate就去查询二级缓存和数据库,数据库没有这条数据 就抛出异常ObjectNotFoundException

3、get方法的加载过程:因为hibernate规定get方法不能使用延迟加载 所以和load还是不一样的,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。

                         例如:Student     stu = session.get(Student.class,stuid);执行此条程序,hibernate的执行过程:

                                   1、get方法首先查询session缓存 (session缓存就是hibernate的一级缓存 这个概念大家应该清楚吧 )
                                   2、get方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load方法使用过,或者被其他关联对象延迟加载过,那么返回的还是原先的代理对象,而不是实体类对象。如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数据库来加载数据,但是返回的还是代理对象,只不过已经加载了实体数据。
                                   3、get方法如果在session缓存中找到了该id对应的对象,并且不是被延迟加载的代理对象,或者在session缓存中没有找到该对象,则查找二级缓存,再没有就查找数据库,返回的对象为实体对象,如果都没有找到,则返回null

(这个代理实际就是空的对象 并没有去数据库查询得到的 我们叫代理对象,如果 去数据库查询了 返回到了这个对象 我们叫实体对象 就是这个对象真实存在)

我在总结性一句话这2者区别 
get方法首先查询session缓存,没有的话直接发送sql查询数据库,一定要获取到真实的数据,否则返回null,并不适用二级缓存;反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,就抛异常

【异常】Error loading ASGI app. Could not import module ‘main‘ 出现或。 阅读详情

相关推荐

Python金融数据获取工具库之baostock使用详解

在金融数据分析和量化交易中,获取准确及时的市场数据是非常重要的。baostock是一个专门为中国股市数据提供支持的 Python 库,它提供了免费的股票数据接口,用户可以方便地获取股票、指数、基金等各种金融数据。本文将详细介绍baostock库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

Rocky006的博客 5340

hibernate延迟加载(get和load的区别)(转)

在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对象时是有区别的,在查询性能上两者是不同的。 一.load加载方式 当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用sessio...

weixin_30780221的博客 405

三维视觉智能焊接系统:免示教技术的工业应用实践

本文深入探讨了三维视觉智能焊接系统中免示教技术的工业应用实践。该系统通过三维视觉相机实时扫描工件,自动识别焊缝并生成轨迹,将产线换型时间从数小时缩短至几分钟,显著提升了生产柔性。文章详细解析了其核心硬件、算法及工厂部署流程,并展望了与数字孪生、工艺智能化融合的未来趋势。

weixin_29091105的博客 430

hibernate中的get和load

Hibernate中Session.get()方法和load()方法的详细比较 一、get方法和load方法的简易理解   4.简单总结 总之对于get和load的根本区别,一句话,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hiberna

qq_26340683的博客 393

动态规划法:n*m方格前进问题

在一个n*m的方格中,m为奇数,放置有n*m个数,方格中间的下方有一人,此人可按照正前方相临的五个方向(方格)前进但不能越出方格。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出和的最大值。 算法设计: 可以使用动态规划方法,从顶部开始,将第二排的每个数加上顶部第一排的最优解,将6排的问题缩小为5排的问题,然后重复该操作,直到底部最后一排,此时

Winifred_1997的博客 4675

超酷炫,Python实现交通数据可视化!

此时输出的栅格化参数params的内容存储了栅格坐标系的原点坐标(slon、slat)、单个栅格的经纬度长宽 (deltalon、deltalat)、栅格的旋转角度(theta)、栅格的形状(method参数,其值可以是方形rect、三角形tri和六边形hexa)以及栅格的大小(gridsize参数,单位为米)。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。今天分享一次Python交通数据分析与可视化的实战!

m0_59236127的博客 1696

Hibernate中get和load的区别

Hibernate中加载对象有两种方法:get和load。所谓的加载也就是查询对象的意思。那么这两种方法到底有什么区别呢? (1)、调用get方法之后Hibernate会立刻发出Select语句,而load方法是在使用对象的时候才发出Select语句。也就是说,调用get方法之后,Hibernate会立刻去数据库中查询指定的数据,而调用load方法之后,Hibernate并不会立刻去数据库中查询...

风萧萧兮易水寒,壮士一去兮不复还 479

解决fetch_california_housing数据集403错误的3种实用方法(附手动下载地址)

本文针对机器学习中常见的fetch_california_housing数据集403 Forbidden错误,提供了三种实用的解决方案。从理解HTTP 403错误的根源出发,详细介绍了修改源码路径、使用国内镜像源以及手动下载并配置数据文件这三种方法,并附带了可靠的手动下载地址,帮助开发者彻底解决数据加载障碍,确保机器学习项目顺利进行。

weixin_29062963的博客 558

Hibernate框架的get和load的区别

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

MyBlogHiHi的博客 1671

低轨通信 | 手机直连低轨卫星通信:架构、关键技术与未来展望

手机直连低轨卫星通信正推动人类进入"全域连接"时代。当中国星网GW星座与千帆星座的万颗卫星点亮夜空,当普通智能手机在珠峰之巅仍能流畅视频通话,当远洋渔船通过卫星物联网实现精准捕捞——这些场景不仅重构通信产业格局,更将深刻改变人类生产生活方式。正如工信部《指导意见》所规划,到2030年我国将发展超千万卫星通信用户,催生万亿级新市场[1][5]。在这场太空基建竞赛中,技术创新与标准制定的双重突破,将决定未来数字文明的星空版图。

尘世冰封的专栏 937

STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联

STM32G4电机控制外设应用笔记摘要:本文详细介绍了TIM1高级定时器生成三对互补PWM波的配置方法(预分频器PSC=30000,重装载值ARR=10000),重点说明需断开电机连线避免干扰。通过STM32CubeMX配置TIM1通道4触发ADC采样,设置RCR分频参数,并给出Keil代码修改要点。第二部分探讨了TIM1、ADC、比较器和DAC的级联应用,包括电流采样触发时序(在PWM波峰值前采样)和过流保护机制。配置步骤包含DAC3作为比较器负输入端、设置Break触发封波保护,并附关键代码段实现外设联

qq_43091070的博客 1101

Hibernate中get()和load()的区别

Hibernate中get()和load()的区别 Hibernate中根据Id单条查询获取对象的方式有两种,分别是get()和load(),来看一下这两种方式的区别。 get() 使用get()来根据ID进行单条查询: User user=session.get(User.class, “1”); 当get()方法被调用的时候就会立即发出SQL语句: Hibernate: select us...

qq_32260583的博客 237

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4966

Hibernate的load()和get()区别

最近在用Hibernate的时候发现一个问题:比如我们从数据库获得一个对象时,使用session.get()方法还是session.load()?  两种方法在获得一个实体对象时是有区别的,在查询性能上两者是不同的。 一.获得实体对象的不同 // load方法public student GetStudentBystudo(String studo){ student

w1764033735的博客 2158

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Hibernate中load和get的区别

Hibernate中Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:   1.get()方法直接返回实体类,load()方法可以返回实体的代理类实例。   2.hibernate load是采用延迟机制(当lazy属性为true时) 而get不采用延迟机制(get语句马上读库)   3.找不到符合条件的数据

XZH359239505的专栏 1406

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hibernate load和get的区别

get和load方式是根据id取得一个记录 1. 从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2. 从检索执行机制上对比: get方法和find方法直接从数据库中检索 load方法 如果映射文件上类级别的lazy属性为false:就跟Hibern

einsdan的专栏 1005

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

hibernate 中的get与load的区别

Hibernate get和load区别get和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null2.从检索执行机制上对比: get方法和find方法都是直接从

记录学习,备忘人生 878

hibernate中get、load和find的区别

get和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。 1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方

水中月 765

hibernate中get和load的区别

hibernate中get和load的区别

hoho_12 2614

Hibernate get和load区别

<br />get和load方式是根据id取得一个记录<br />下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。<br /> <br />1.从返回结果上对比:<br />load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常<br />get方法检索不到的话会返回null<br /> <br />2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂首先查找sessi

zhuyongjp的专栏 544

Hibernate Session get()vs load()的区别

Hibernate Session get()vs load()的区别 Hibernate Session提供了从数据库中获取数据的不同方法。其中两个是 -get()和load()。我们还可以在不同的情况下使用很多重载方法。 首先看两者get()并且load()看起来相似,因为它们都从数据库中获取数据,但它们之间几乎没有差别,让我们用一个简单的例子来看一下它们。 packa...

YunWisdom 421

hibernate中get和load,find的区别

get和load方式是根据id取得一个记录下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null2.从检索执行机制上对比:get方法和find方法都是直接从数据库中检索而load方法的执行则比较复杂■

车前猛跑 1万+

Hibernate 中get, load 区别

1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本中get方法也会查找二级缓存!   2.  load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:

Tender 1816
上一篇: Hibernate框架简述
下一篇: Hibernate n+1问题
andyLiuJava
博客等级 码龄14年 0粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值