(hibernate之四)session的load方法和get方法

SAP PS项目结算实操:从CJ20N到CJ88,手把手搞定项目成本结转与凭证生成 本文详细解析SAP PS项目结算全流程,从CJ20N到CJ88的操作要点,涵盖成本归集、结算规则配置、结果分析及凭证生成等关键环节。特别针对FICO模块中的项目凭证流转问题提供实战解决方案,帮助财务人员规避常见配置错误,提升项目结算效率与准确性。 阅读详情
public void test() {
 Teacher teacher1=new Teacher();
 Teacher teacher2=new Teacher();
 //有异常的load
 /*
 Session session=sessionFactory.getCurrentSession();
 session.beginTransaction();
 teacher1=(Teacher)session.load(Teacher.class,9);
 session.getTransaction().commit();
 System.out.println(teacher1.getName());
 */
 //没有异常的load
 Session session=sessionFactory.getCurrentSession();
 session.beginTransaction();
 teacher1=(Teacher)session.load(Teacher.class,9);
 //这里重点,因为调用getName(),所以load方法才去读取数据库
 System.out.println(teacher1.getName());
 session.getTransaction().commit();
 System.out.println(teacher1.getName());
 session=sessionFactory.getCurrentSession();
 session.beginTransaction();
 teacher2=(Teacher)session.get(Teacher.class,10);
 session.getTransaction().commit();
 System.out.println(teacher2.getName());
 }

总结:

  1 get方法是直接访问了数据库,当没有相应数据则返回null
  2 load方法是延迟加载,返回的是一个代理,当有调用到对象的相关方法时才访问数据库,如果没有相应数据则异常
  3 load方法得到的对象必须在session关闭前使用到,不然再访问就异常,因为它的不访问数据库了

最后记住:
1) load延迟加载在session关闭必须先使用,不然后面就不能使用
2) 当没有相应数据时,get返回null,load则异常


Vue2 - 详细实现解析Markdown内容生成侧边栏Toc目录索引,识别文章内容根据大标题/小标题自动生成多级文章目录,点击目录导航时跳转到文章内容对应的锚点位置带过渡动画,滑过锚点时高亮对应标题 vue2,nuxt2,Markdown,目录,文章目录锚点,滚动高亮导航文字,根据页面滚动高亮显示目录的侧边栏,自动提取标题生成右侧目录,vuemarkdown解析并生成目录,滚动页面的时候文章目录跟着选中效果,侧边栏滚动跟随页面,右边目录固定,左边内容可以滚动并且与左边目录联动,实现监听滚动,锚点定位,文章目录滚动跟随高亮,右边菜单点击目录滚动到对应标题,报错,渲染失败,文章内容,读取#标题符号,自动生成一个目录树,自动生成Toc目录,博客内容生成目录索引,资讯文章,生成锚点目录树TOC,详细示例代码教 阅读详情

相关推荐

比亚迪璇玑架构:10ms级响应引领智能驾驶革命

比亚迪璇玑架构通过三大创新,实现10ms级控制响应时延,使AEB刹车距离比竞品缩短20米。

百态·数智思维 | 聚焦大数据、量化与未来AI 1257

Hibernate 操纵对象 Session用法

Session接口是Hibernate向程序提供操纵数据库的最主要接口,它提供了基本的保存、更新、删除和查询方法。它有一个缓存,保存了持久化对象,当清理缓存时,按照这些持久化对象同步更新数据库 JAVA对象在JVM中的生命周期 就用new语句创建一个对象是,JAVA虚拟机会为这个对象分配内存空间,只要这个对象不被任何引用变量引用,它就结束生命周期.如: //创建一个Customer对

jazywoo_在路上 951

ATE测试的未来:自动化与智能化的技术演进

本文探讨了自动测试设备(ATE)在半导体产业中的技术演进,重点关注自动化与智能化的发展趋势。随着芯片制程的不断进步,ATE面临测试复杂度激增和成本压力等挑战。文章分析了AI技术在测试优化中的应用,如自适应测试和缺陷预测,以及模块化架构和端到端测试生态系统的创新。这些技术突破显著提升了测试效率和设备利用率,为半导体测试的未来发展指明了方向。

weixin_29232507的博客 614

Hibernate中Session.load与Session.get的区别

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

千纸蝴蝶--博客园 1万+

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO 在之前的工作中有接触过LOAM,最近在工作中又接触到Faster LIO相关的工作,于是想着对Fast LIO / Fast LIO2 / Faster LIO这一系列工作进行一个简单的总结,以加深自己对激光SLAM算法的理解,之前总结过的一些和激光SLAM算法相关的博客还有,感兴趣的同学可以一起学习讨论: 激光SLAM总结——VLOAM / LIMO算法解析 激光SLAM总结——LIO-Mapping / LIOM /

weixin_44580210的博客 1万+

在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合

本文介绍了在Mac上搭建本地AI工作流的方法,结合Dify平台和DeepSeek模型。Dify是一个开源的大语言模型应用开发平台,支持可视化AI应用开发。部署步骤包括:1)安装Homebrew和Docker;2)克隆Dify代码库;3)配置环境变量并启动服务。同时,使用Ollama工具本地部署DeepSeek模型,将其集成到Dify中创建聊天助手。通过配置模型接口和新建应用,用户可以在本地环境中实现AI对话功能。这种方案既保证了数据隐私,又提供了灵活的AI应用开发能力。

Linda的自动化测试之旅 1536

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

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

liaowenxiong的博客 939

当拿到金葡菌的全基因组测序数据后该怎样进行分析呢

很多做科研实验/做课题报告的科研老师们在拿到全基因组测序数据之后要进行一系列的分析,但同时也担心数据庞大分析缓慢导致进度,也有因为不会编程不知道该如何进行拼接分析的...其实需要质控拼接、MLST分析及菌种鉴定等完全可以自己在平台上进行分析,下面以金葡菌为例进行了质控拼接及菌种鉴定等分析。 网络图片(侵删) 金黄色葡萄球菌(Staphylococcus aureus,S. aureus)也称“金葡菌”,隶属于葡萄球菌 属,是革兰氏阳性菌的代表,为一种常见的食源性致病微生物。 那么在取得了金葡菌全基

GenesClouds的博客 1970

Hibernate中Session的load()和get()方法

Session的load()方法和get()方法根据给定的对象id从数据库表中加载一条记录并转换为一个特定的持久类对象。load()方法在没有找到特定的持久类对象所对应的数据库表中的记录时,会抛出ObjectNotFoundException,而get()方法返回null。     get()方法和load()方法返回的对象位于Session的缓存中,因此党对他的属性进行修改后,Sess

ferhad的专栏 464

【史诗级】详细阐述借助AI实现对Windows蓝屏原因进行精确定位的方法

在解决问题的过程中我决定把这一切都记录下来,并整理出一套通用的方法,方便快速精确定位引起蓝屏的真实原因。今天我的蓝屏代码是0x000000ef,而你或许是遇到另一个蓝屏代码,代码本身代表的含义不是这里的讨论重点,重要的是解决问题的底层逻辑。

sprlightning的博客 1万+

clock min pulse width检查

高电平脉宽 = clock fall edge到达FF/CK的时间 - clock rise edge到达FF/CK的时间;低电平脉宽 = 下一T clock rise edge到达FF/CK的时间 - clock fall edge到达FF/CK的时间。而required pulse width是根据FF/CK处的transition,根据查找表计算得到的。为什么clock transition越大,会导致required pulse width越大呢?5、 降低clock上的串扰。

芯冰乐 579

Hibernate中Session的get和load

hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别。测试版本:hibernate 4.2.0。 get Session接口提供了4个重载的get方法,分别通过“持久类+主键”和“全类名+主键”以及“锁选项”来获取实体对象。 public Object get(Class clazz, Serializable...

weixin_30352191的博客 346

流体动力学仿真软件:Star-CCM+_(15).用户自定义函数与模型

用户自定义函数(User-Defined Functions, UDFs)允许用户编写自己的函数,并在仿真中调用这些函数。UDFs可以用于定义复杂的边界条件、源项、材料属性等。Star-CCM+支持多种编程语言,包括C++、Fortran和Java等,其中最常用的语言是Java。用户自定义模型(User-Defined Models, UDMs)允许用户在仿真中引入自定义的物理模型。这些模型可以用于描述流体行为、化学反应、多相流等复杂现象。Star-CCM+提供了丰富的API来支持UDMs的开发。

kkchenjj的博客 556

Hibernate中Session.get()方法和load()方法的详细比较

1、get()方法直接返回实体类,如果查不到数据则返回null。load()会 返回一个实体代理对象(当前这个对象可以自动转化为实体对象), 但当代理对象被调用时,如果没有数据不存在,就会抛出个 org.hibernate.ObjectNotFoundException异常 2.load先到缓存(session缓存/二级缓存)中去查,如果没有则返回一个 代理对象(不马上到DB中去

徐刘根的博客 7944

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hibernate中session的get方法和load方法的区别

get vs load: 执行 get 方法: 会立即加载对象. 执行 load 方法, 若不适用该对象, 则不会立即执行查询操作, 而返回一个代理对象 get 是 立即检索, load 是延迟检索. load 方法可能会抛出 LazyInitializationException 异常: 在需要初始化代理对象之前已经关闭了 Session 若数据表中没有对应的记录, Session 也没有...

weixin_41809206的博客 768

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hibernate中的JUnit和session中的get和load方法

Junit是一个java语言的单元测试框架,用于编写和运行可重复的测试,使用这个框架需要注意以下几点:        1、编写测试类的命名为XXTest,并且需要继承TestCase        2、编写单元测试方法,方法的名称必须为test开头,方法没有返回值,采用public修饰        3、最好将测试程序放在单独的目录中        4、建议使用断言的方式     通

致力于顶级java全栈工程师 1002

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Hibernate框架中get和load查询

原文链接:http://www.yiidian.com/hibernate/hibernate-get-load.html 1 演示get和load方法的基本使用 /** * 演示基本对象的查询 * @author http://www.yiidian.com * */ public class Demo { /** * get()方法: 查询一个对象 */ ...

Java客学习室 1053

Hibernate中Session之get和load方法的真正区别

最近在学习SHH框架中的hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深。所以百度了一下,结果问题来了。百度的结果和实际测试的结果出入很大。主要是对get方法的说法跟实际运行的结果不一致。 先说一下观点吧: get不支持lazy,load支持lazy; 数据不存在时,get返回null,l...

baeryu4478的博客 178

Hibernate中session 的get()方法和load()方法

Get()方法的使用  比如我们定义了一个employee对象:

小鱼的专栏 1531

Hibernate中Session的get()和load()方法

Hibernate中Session的get()和load()方法

简乐君 970

Hibernate中Session.load/get方法

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

pwh309315228的博客 437

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

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

白菜 364

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

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

YunWisdom 421

hibernate中,Session对象的get和load方法的区别

1.get方法是直接加载数据库,即:使用get方法,hibernate将直接执行select查询语句 2.load的设计是懒加载,用到时才去查询数据库,即:使用load方法,hibernate不会马上执行sql语句,当使用所查数据内的实体类的数据时,hibernate再执行select查询语句 3.load方法返回的是对象的一个代理 4.load方法的执行原理图: ...

吴名氏的博客 4万+

hibernate session 的get 与load的区别

为了区别 load 与 get的 方法的差异 ,特作了以下测试:  实体类: Address.java    package one2one;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;imp

贺辉 1111
上一篇: (hibernate之三)session的delete方法
下一篇: 过滤器和拦截器的区别
zi_jun
博客等级 码龄18年 109粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值