孙卫琴的《精通JPA与Hibernate》的读书笔记:FetchType.LAZY延迟检索策略

孙卫琴Java Web全套源码 孙卫琴 Java Web 全套源码 含工程文件 和书配套 作者的书通俗易懂 立即下载

对于一对多关联和多对多关联,应该优先考虑使用默认的延迟检索策略。在Customer类中,以下代码对orders集合属性采用延迟检索策略:

//采用默认的延迟检索策略
@OneToMany(mappedBy="customer")
private Set<Order> orders = new HashSet<Order>();

或者:

//显式设置延迟检索策略
@OneToMany(mappedBy="customer",
             fetch=FetchType.LAZY)
private Set<Order> orders = new HashSet<Order>();

此时运行EntityManager的find(Customer.class,Long.valueOf(1))方法,仅仅立即加载Customer对象,执行以下select语句:

select * from CUSTOMERS where ID=1;

EntityManager的find()方法返回的Customer对象的orders属性引用一个没有被初始化的集合代理类实例,换句话说,此时orders集合中没有存放任何Order对象。

只有当orders集合代理类实例被初始化时,才会到数据库中检索所有与Customer关联的Order对象,执行以下select语句:

select * from ORDERS where CUSTOMER_ID=1;

那么,Customer对象的orders属性引用的集合代理类实例什么时候被初始化呢?主要包括以下两种情况:
(1)当应用程序第一次访问它,例如调用它的iterator()、size()、isEmpty()或contains()方法:

Set<order> orders=customer.getOrders();

//导致orders集合代理类实例被初始化
Iterator<Order> it=orders.iterator();

(2)通过org.hibernate.Hibernate类的initialize()静态方法初始化它:

Set<Order> orders=customer.getOrders();
Hibernate.initialzie(orders); //导致orders集合代理类实例被初始化

在这里插入图片描述

孙卫琴Java培训讲义 此资源为孙卫琴老师讲解java编程基础的课程讲义,是初学者的好帮手 立即下载

相关推荐

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

孙卫琴的《精通Vue.js》读书笔记-Vue组件的数据监听

如果Vue组件的一个变量num会被频繁更新,并且当变量num每次被更新时,需要进行一系列耗时的操作,比如访问远程服务器的资源,或者通过复杂耗时的运算更新那些依赖变量num的其他变量(比如result变量)。在这种情况下,可以通过Vue框架的数据监听器Watcher来实现对变量num的监听。Vue的watch选项会通过Watcher来监听数据。例程1的mywatch.html演示了watch选项的基本用法。例程1 mywatch.html。......

csdnuserlala的博客 372

修改Avaya IP-Office电话交换机出厂自带的提示语音内容

1,本文的应用场景是在使用Avaya IP-office 500 v2电话交换机时,来电振铃超时后,会转入语音信箱,呼叫者会听到一条语音信箱留言的欢迎辞(…请留言…)。但我们单位情况比较特殊,首先是的IPO配置很精简,内嵌的语音信箱只能保留3天,用处不大;其次是用户没有收听语音信箱的习惯;第三是我们单位使用数字中继和DID,每人一个直拨号码,不通过总机转接。很多业务是单线联系,所以一旦来电无法接通,来电者可能完全无法联系到我们单位的其他同事。出于这三点原因,我们希望将语音信箱的欢迎辞,增加告知我们的总机电话

qlin4cn的博客 4917

孙卫琴——缅怀张孝祥老师(原文)

作为热爱软件开发的晚辈,对软件开发高手是敬佩的。虽然,我并没有去参加过java的培训。但是,我是通过java的视频来自学的。包括:王勇。马士兵老师。再就是 传智播客的了。自从听了张孝祥老师的视频以及看了张孝祥老师的书,感觉到:相见恨晚啊,给人一种通俗易懂的感觉,就像是喝了上品的就一般,陶醉其中爱不释手,感觉能把技术知识讲解的如此透彻,令我心生佩服。 而 孙卫琴 老师也是一位技术高...

编程资料大全 286

从维纳滤波到Richardson-Lucy:图像去模糊算法的原理与实践

本文深入解析了图像去模糊的核心原理,重点对比了维纳滤波与Richardson-Lucy两种经典去卷积算法。维纳滤波在频域进行快速权衡,适用于高斯噪声场景;而Richardson-Lucy算法基于泊松噪声模型迭代优化,更适用于天文、显微等科学成像。文章通过Python代码实践,详细阐述了PSF(点扩散函数)的关键作用及算法选型指南。

weixin_29285605的博客 385

Java8动态生成SFunction:基于字段名的Lambda表达式实践

本文深入探讨了在Java8中如何基于字段名动态生成SFunction,以解决MyBatis Plus的LambdaQueryWrapper在动态查询场景下的局限性。通过核心原理LambdaMetafactory的解析和手把手的代码实现,展示了如何将字符串字段名转换为类型安全的Lambda表达式,从而实现真正动态、类型安全的查询条件构建与通用数据处理,显著提升代码的灵活性与安全性。

sss66的博客 951

Hibernate实战开发教程

基本信息 讲师: 孙卫琴 时长:45分钟 集数:5 每集定价:10 元 购买地址:http://product.china-pub.com/3501778 课程介绍 本课程为Hibernater初级入门课程。 作者介绍 畅销图书《精通Struts:基

hzpeixun的专栏 665

我用两个月时间,终于把优快云付费资源项目玩明白了!

关于项目的定位,这是一个知识付费项目,根据市场研究机构的数据显示,到2023年,全球知识付费市场规模将达到2000亿美元,所以说知识付费的前景是十分广阔的,当下互联网时代信息大爆炸,80后、90后、00后群体对知识付费的认可度也大幅提升,同时这群作为知识付费的主流人群已经具备了更强的消费能力,而且对于知识付费的需求更高。目前整个知识付费领域仍然在发展起步的初期,尽快在知识付费领域布局可以帮助我们在这波红利中获得一份不错的收益。而且个人认为,

白话机器学习 2万+

fetch = FetchType.EAGER 作用

如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中 如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。 但是,在session外,就不能再取了。用EAGER时,因为在内存里,所以在session外也可以取。   一般只在一边设Eager,JPA接口默认为一对多为Lazy,多对一为...

A1682234的博客 1383

基于PSO-BP神经网络的风电功率预测研究论文复现

风电功率预测。基于PSO-BP神经网络的风电功率预测论文复现。matlab程序,注释清晰。

weixin_825487230的博客 2294

手把手教你用Ubuntu Desktop搭建个人L2TP服务器,手机电脑都能连(Network Manager配置详解)

本文详细介绍了在Ubuntu Desktop上使用Network Manager图形化配置L2TP服务器的方法,实现手机、电脑等多设备安全连接。从环境准备、图形界面设置到各平台客户端配置,提供一站式解决方案,并包含常见问题排查与安全增强措施,帮助用户快速搭建个人远程访问网络。

weixin_30555125的博客 118

孙卫琴的《精通Vue.js》读书笔记-Vuex中异步操作

本文参考孙卫琴,杜聚宾所创作的一书此外,还可以通过async/await来执行异步操作,例如。

csdnuserlala的博客 293

Codex 桌面端自定义模型列表为空 — 修复记录

摘要:Codex桌面端首次启动正常,但二次启动后出现中文界面且模型列表丢失。问题根源在于Electron的Chromium持久化状态损坏,导致UI渲染异常。解决方案包括:1) 将config.toml中的模型路径改为绝对路径;2) 删除损坏的状态文件.codex-global-state.json;3) 清除Chromium用户数据目录AppData\Roaming\Codex\web。验证显示修改后模型功能恢复正常,重装无效的原因是卸载未清除用户数据目录。

猿小白的博客 1150

FetchType.EAGER与FetchType.LAZY的区别

1、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。 2、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。 3、比方User类有两个属性,name跟address,就像百度知道,登录后用户名是需要显示出来的,此属性用到的几率极大,要马上到数据库查,用急加载;而用户地址大多数情况下不需要显

donghedonghe的专栏 1178

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

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

关于JAP FetchType.LAZY(hibernate实现)的理解

<br />来源:http://www.diwuzhang.com/people-1/article-124/<br /> <br /><br />JPA定义实体之间的关系有如下几种:@OneToOne @ManyToOne @OneToMany @ManyToMany<br />在定义它们的时候可以通过fetch属性指定加载方式,有两个值:FetchType.LAZY:延迟加载 FetchType.EAGER:急加载<br />急加载就好理解了,在加载一个实体的时候,其中定义是急加载的的属性(proper

xyzroundo的专栏 5234

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

@ManyToOne(fetch=FetchType.LAZY)

@ManyToOne(fetch=FetchType.LAZY)  ---> ManyToOne指定了多对一的关系,fetch=FetchType.LAZY属性表示在多的那一方通过延迟加载的方式加载对象(默认不是延迟加载)   @JoinColumn(name="rid")  --->  通过 JoinColumn 的name属性指定了外键的名称 rid (注意:如果我们不通过JoinColum

u012402926的专栏 2万+

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

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

IDEA导入Maven项目(Spring+Mybatis)后登录报错:找不到对应的Dao方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34199405的博客 766

hibernate 中fetch=FetchType.LAZY问题

我的实体类Deptment 中 @OneToMany(mappedBy="deptment",cascade=CascadeType.ALL,fetch=FetchType.LAZY)     public Set getEmployees() {         return employees;     } 在dao层中 public List queryDeptList() {

fygkchina的专栏 3281

org.hibernate.lazyInitializationException(懒加载异常)

在有@ManyToOne注解标注的方法中这错误很常见,字面意义就是不能被初始化,因为session已经关闭了。 fetch=FetchType.LAZY就等于打开了延迟加载。 Hibernate中的get方法不论是否开启延迟加载都会一次加载所有基本数据类型属性的值,而load则不同,开启延迟加载后load(id),返回的对象会被Hibernate加一个壳(持久化上下文中没有缓存该对象的前提下),拦...

lxy1740的博客 2713

SpringBoot注解大全 转

2019年3月17日22:30:10 一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 @Configuration 等同...

Z.X的博客 725

fetchtype 动态控制_hibernate 中 fetch=FetchType.LAZY 懒加载失败处理

对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,使得Hibernate的Session的生命周期变长,直到这个请求结束,具体是通过一个Filter来实现的。 那么,如果现在我们想用Hibernate懒加载特性,又想用延长session的生命周期,知道将数据...

weixin_39638623的博客 375

Java for Web学习笔记(一三六)映射(12)还谈FetchType.LAZY

说明 在前面的学习中(见Java for Web学习笔记(一二七)映射(3)OneToOne),加上fetch = FetchType.LAZY的属性是集合或者Map。反映在SQL中,就是读取其他表格的信息(无论是通过join还是什么)。例如前面学习的@OneToMany、@ElementCollection。就单个表格而言,一次读取所有的列的数据,实际上在MySQL中,即使我们只是SELECT...

愷风(Wei)的专栏 3332

Hibernate--fetch=FetchType.LAZY

@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy=&amp;quot;subject&amp;quot;) @JoinColumn(name=&amp;quot;subject_id&amp;quot;) Hibernate的数据加载方式: 1.即时加载 immediately loading          实...

javaThinker的专栏 302
上一篇: 孙卫琴的《精通JPA与Hibernate》的读书笔记:用@OneToOne注解映射一对一关联
下一篇: 孙卫琴的《精通JPA与Hibernate》的读书笔记:用@ManyToMany注解映射双向关联
Java技术集锦
博客等级 码龄7年 94粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术集锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值