Hibernate框架的get和load的区别

ISO 26262中的失效率计算:Mission profile的使用 Mission profile:任务剖面,即产品在完成规定任务这段时间内所经历的时间和环境的时序描述;集成电路在工作时环境温度是在不停变化的,同时也存在运行状态和非运行状态;为此标准提出了根据任务剖面(Mission profile)以及集成电路的实际结温来评估热幅度变化、循环温度幅值等因素的影响;汽车电子元器件相关的Mission profile参考IEC TR 62380:Table 11。 阅读详情

Hibernate框架的get和load的区别

一、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的根本区别,一句话

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

Qt入门教程【Core篇】singal and slot信号与槽 Qt中信号与槽singal and slot 阅读详情

相关推荐

用友U8自定义按钮开发:从基础配置到实战业务集成

本文详细介绍了用友U8自定义按钮开发的完整流程,从基础配置到实战业务集成。通过实际案例演示如何在U8系统中添加和替换功能按钮,包括数据库配置、SQL脚本编写和VB组件开发等关键技术点,帮助企业用户实现业务场景的深度定制。

weixin_29698641的博客 254

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

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

weixin_30780221的博客 405

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2812

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

Uniapp H5端SEO优化全攻略:提升搜索引擎排名与流量

在移动互联网时代,H5页面因其跨平台、低成本、易传播的特性,成为许多企业的首选。Uniapp作为一款优秀的前端跨端开发框架,能够快速开发H5、小程序、App等多端应用。然而,由于Uniapp默认采用SPA(单页应用)架构,H5端在SEO(搜索引擎优化)方面存在一定劣势,如爬虫难以抓取动态内容、页面标题和描述不易优化等。 本文将系统性地介绍Uniapp H5端的SEO优化方案,涵盖基础优化、SPA优化策略、内容优化、技术优化、外部优化及监测分析,帮助开发者提升网站在搜索引擎中的排名,获取更多自然流量。

vvilkin的学习备忘 1971

单片机OTA升级:Bootloader如何多重校验保障APP完整性?

本文详细介绍了单片机OTA升级中Bootloader如何通过CRC校验、数字签名、版本比对和存储位置检查等多重校验机制保障APP完整性。CRC校验作为快速检测数据完整性的核心手段,结合其他安全措施有效防止设备变砖和安全漏洞,确保远程升级的可靠性。

l3m4n的博客 981

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

执行语句 会先在一级缓存中找 id=2 的 UserInfoBean 对象(看红色线条),找不到去二级缓存找,还找不到就不找了,直接获取一个代理对象并返回该对象。当需要获取代理对象中的属性值时,则直接去数据库查(看蓝色线条),就是所谓的懒加载。执行语句 ,由于 load 方法已经查过 id=2 这个对象,所以这个对象(其实是一个代理对象)已经保存在缓存中了,因此 get() 方法可以在缓存区中直接获取到这个对象(看灰色线条)。执行语句 ,由于 id=3 这个对象没有查过,get() 方法先去一级缓存中找

liaowenxiong的博客 939

ApolloScape 数据集:YOLOv10 + UI界面实现与应用

是由百度Apollo团队发布的一个大规模自动驾驶数据集,涵盖了车辆、行人、骑行者等多种交通元素,旨在为自动驾驶技术的发展提供丰富的数据支持。数据集包含多种复杂的场景,例如城市道路、交叉口、车辆聚集等,能够帮助研究人员和开发者在多种现实环境下测试和验证目标检测模型。YOLO(You Only Look Once)系列算法是目前最流行的目标检测算法之一,因其高效、准确以及实时性强的特点被广泛应用于计算机视觉领域。YOLOv10是YOLO系列中的最新版本,在性能和效率上进行了多方面的优化。速度快。

YOLO 926

hibernate中的get和load

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

qq_26340683的博客 393

深度学习图神经网络 (GNN) —— 处理图结构数据(六十九)

本文系统介绍了图神经网络(GNN)的核心概念、主流模型及其应用。主要内容包括: GNN基础:阐述了图结构数据的特性(节点数不定、连接不规则),以及GNN相比CNN/RNN的优势在于处理非欧式空间的图数据。 核心机制:重点讲解了消息传递框架(MPNN),通过聚合邻居信息迭代更新节点表示,并分析了GCN的归一化邻接矩阵计算和GAT的注意力权重机制。 典型模型: GCN:基于归一化邻接矩阵的特征传播 GAT:引入注意力机制区分邻居重要性 GraphSAGE:通过采样解决大图扩展性问题 GIN:理论表达能力最强的图

hello.reader 300

【WRFDA教程】客观分析(OBSGRID)详解

客观分析(OBSGRID)详解

WW、forever的博客 1133

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

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

重心开始,重新开始 3684

ADBMS1818芯片

 可测量多达18串电池电压 3 mV最大总测量误差 内置isoSPI接口 使用单根双绞线,长达100米 290 μs内可完成系统中所有单体电池电压测量。

m0_61973119的博客 4271

Hibernate框架之get和load方法的区别

我们在学习Hibernate框架时,经常会进行修改,删除操作,对于这些操作,我们都应该先加载对象,然后在执行或删除的操作,那么这里Hibernate提供了两种方法按照主键加载对象,也就是我要说的get和load这两个方法。 我们都知道这两个方法都能够去加载对象,但是他们之间的区别我们必须要去了解一下,这可能也会成为面试的重点。下面我们 主要分析一下get和load这两个...

窗台有只猫的博客 160

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Hibernate框架Session类get()和load()的区别

get和load方式是根据id取得一个记录 1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂首先查找session的persistent Context中是否有缓

攻城狮Luke 830

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hibernate 框架中加载方式 get 和 load 以及 慢加载 和 急加载 的区别

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

215

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java三大框架SSH之Hibernate_001_04:session的api(即session的方法):save、get和load、delete和update、get和load方法的区别【面试题】

系列文章目录 文章目录系列文章目录前言一、session的api——save、get和loadsaveget和load二、session的api——delete和updatedeleteupdate三、session的api——get和load方法的区别【面试题】总结 前言 一、session的api——save、get和load save save我们已经用了很多次了比如下图的把对象存到数据库里面去 get和load get就是获取数据的 这句代码就相当于 select * from User wh

小良的博客 319

hibernate的get和load区别

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

javaloveiphone的专栏 1万+

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

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。 其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。 Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。 load方法可以充分利用内部缓存和二级缓存中的现有数据,

白菜 364

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

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

ddd77197的博客 132

Hibernate的get和load的区别

load()方法是假定你所读取的对象是肯定存在的...而get则是尝试访问..如果没有则返回null.而load就会抛出Exception cant load ...个人认为这两个方法唯一的区别就是为了实现不同的业务需要...从src上看性能是一样的。get是直接查询数据库,如果查不到就返回null。Load会首先从内存中装载,如果以前没有装载或查询出来,才开始查询数据库,某些情况下效率会高一

南极光经验分享 1054

Hibernate get和load区别

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

wu1317581750的博客 151

hibernate的查询 (比较get 与load)

hibernate的查询的比较hibernate的查询有很多,Query,find,Criteria,get,load query使用hsql语句,可以设置参数是常用的一种方式 criteria的方式,尽量避免了写hql语句,看起来更面向对象了。 find方式,这种方式已经被新的hibernate丢弃见这里http://www.blogjava.net/dreamstone/arc...

deso96240的博客 181

Hibernate中get和load的区别

get与list最本质的区别就是get会立即产生一条SQL语句,而load会实现懒加载。 数据库中没有数据时:get不会抛出异常,load会抛出异常 在配置文件中设置lazy=“false”(默认为true)。 详细区别: 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回nu...

Boogie 516

hibernate中Session 的 get() 和 load() 方法的区别

 1.  执行get()方法,会立即加载对象      执行load()方法,若不适应该对象,则不会立即执行查询操作,而返回一个代理对象       get()是立即检索,load()是延迟检索 2.  若数据库表中没有对应的记录      get()返回null      load()返回异常3.  load()方法可能会抛出LazyInitializationException异常:    在...

weixin_41069280的博客 277

hibernate的load()和get()的区别和联系

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

meipan0301的博客 377
上一篇: @RequestParam,@PathParam,@PathVariable等注解区别(部分注解的使用)
下一篇: 前端框架---之----layui的使用
MyBlogHiHi
博客等级 码龄5年 8粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值