Hibernate第八篇【懒加载】

前言

前面在使用Hibernate的时候就提及过了懒加载,但没有好好地说明具体的说明究竟是怎么回事…本博文主要讲解懒加载

什么是拦截器以及为什么要使用懒加载?

懒加载就是当使用数据的时候才去获取数据、执行对应的SQL语句…当还没用到数据的时候,就不加载对应的数据!

主要目的就是为了提高Hibernate的性能,提高执行效率!

  • get: 及时加载,只要调用get方法立刻向数据库查询
  • load:默认使用懒加载,当用到数据的时候才向数据库查询。

懒加载再次体验

        User user = (User) session.load(User.class, 1);

        System.out.println("________");
        System.out.println(user);

这里写图片描述

我们可以在对应的配置文件用通常lazy属性来设置

关闭懒加载:

    <class name="IdCard" table="IdCard" lazy="false">

这里写图片描述

lazy有三个属性:

  • true 使用懒加载
  • false 关闭懒加载
  • extra (在集合数据懒加载时候提升效率)【只有在set、list等集合标签中使用】
    • 在真正使用数据的时候才向数据库发送查询的sql;
    • 如果调用集合的size()/isEmpty()方法,只是统计,不真正查询数据!

懒加载异常

当Session关闭后,就不能使用懒加载了,否则会报出异常


Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session

这里写图片描述

报出了这个异常,我们有4种方法解决:

  • 方式1: 先使用一下数据
    • dept.getDeptName();
  • 方式2:强迫代理对象初始化
    • Hibernate.initialize(dept);
  • 方式3:关闭懒加载
    • 设置lazy=false;
  • 方式4: 在使用数据之后,再关闭session!
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
MBD-从一个示例看代码生成过程(rtw文件、TLC语言) 大概介绍了MBD代码生成流程,rtw文件、TLC语言 阅读详情

相关推荐

标准工时精益化管理:理论、方法与技巧

ECRS工时分析软件是一款综合性软件,包含了IE软件、IE改善软件、工业工程软件、作业改善/业务改善软件、动作分析软件、作业分析软件、ECRS分析法、ECRS改善手法、时间测量软件、工时测量软件、标准工时计算软件等功能。理论上,标准工时是指在标准的工作环境下,完成一道加工工序所需要花费的人工时间。不同企业、不同工序需要的辅助作业时间和损耗时间各不相同,因此企业需要灵活运用标准工时公式进行计算。总之,标准工时的制定需要综合考虑多种因素,企业可以灵活运用本文介绍的方法和技巧来优化制定流程。

VIOOVI_ECRS的博客 847

关于hibernate中取消懒加载问题

玩过hibernate的人都知道 ,hibernate为了提高效率,采用了懒加载这个玩意,他好处很多,但是也存在着问题,比如2个类是1对多或者多对一的关系,我需要在view层显示其中一个类的关联类,那正常获取就爆炸了,会报错说session已经关闭什么的,这个时候就需要取消懒加载,这里有3种方式 1.将该类的lazy设置为false,这种方式我是不推荐的,因为有时需要懒加载,有时不需要。 2.

hecaicai666的博客 4891

Unity URP项目里Post Processing死活没效果?别慌,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果失效的五大常见问题,包括渲染管线配置冲突、Volume作用域误判、摄像机参数漏配、Layer层级冲突和Profile引用异常。通过实际项目案例和代码示例,提供专业级解决方案,帮助开发者快速排查并修复后处理效果不生效的问题。

weixin_33721427的博客 333

解决Hibernate懒加载的4种方式

本文总结了我在学习hibernate的过程中,解决hibernate懒加载问题的四种方式。 懒加载简述:当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性时,才会向数据库再一次发出查询语句。 例如,有一个对象是Employee,还有一个对象是Department。显然,对于Employee相对Department来说,是多对一的关系;而对于Depart

Huhui's Blog 1万+

跟着团子学SAP CO:基于成本的完工百分比结算:Cost-based POC(以项目为例)

本文以英国及北美会计准则下的基于成本的POC的销售型项目结算对PS模块中的完工百分比进行介绍

Lucas1211的博客 2万+

【原创】汇川H5U PLC控制伺服的方法

6、在线调试-进入伺服调试,可以在本软件上进行调试,可以实现原点回归、正向点动、反向电动、使能(这里使能打开时触摸屏上的使能不能打开,会冲突)、复位、停止(如下图所示)。5、在原点返回设置中一般情况下对原点信号、正限位、负限位、原点返回方向、原点返回方式进行设置,其他设置默认不改(如下图所示)。3、在单位换算设置上只需要修改脉冲数和移动量(根据伺服配套导轨上名牌进行设置),其他设置默认不改(如下图所示)。11、双击后右边出现编辑框 在上半部分定义变量(IN、INOUT、OUT、VAR)(如下图所示)。

Qinmingyue13的博客 6665

hibernate LazyInitializationException 懒加载异常的四种解决方案

简介:org.hibernate.LazyInitializationException:could not initialize proxy - no Session (懒加载异常在默认情况下,hibernate为懒加载),这意味着在读取数据的时候,Session已经关闭。 解决方案(四种):   第一种:在get属性方法上添加@JSON(Serialize=false)注解, 在转j...

lxw1005192401的博客 6584

96.在 Vue 3 中使用 OpenLayers 探究加载 Point、Polygon 的极限

在前端 GIS(地理信息系统)开发中,OpenLayers 作为一个功能强大的 Web 地图库,广泛用于加载地图、渲染矢量数据(点、线、面)、叠加图层等场景。然而,当涉及到。

小彭的博客 1155

Hibernate懒加载

Hibernate懒加载 懒加载 通过asm和cglib两个包实现;Domain是非fina的。 1、session.load懒加载。 2、one-to-one(元素)懒加载:       必须同时满足下面三个条件时才能实现懒加载       (主表不能有constrained=true,所以主表没有懒加载)       Lazy!=false 2)constrained=true

扈亚楠(Java) 2362

13、使用 Mathematica 撰写文本

本文详细介绍了如何使用 Mathematica 进行文本撰写与处理。内容涵盖文本输入、格式设置、结构化排版、超链接插入、翻译与拼写检查工具的使用,以及将笔记本导出为多种格式(如 PDF、HTML、LATEX 和 RTF)的方法。通过实例演示了创建专业文档的完整流程,包括样式设置、公式推导、标题编号、页眉页脚配置等操作。适合希望利用 Mathematica 编写学术论文、技术报告或教学资料的用户参考。

sony5的博客 208

《Python星球日记》 第73天:情感分析与主题建模

《Python星球日记》 第73天:情感分析与主题建模,今天我们将探索两个自然语言处理领域的重要技术:情感分析和主题建模。这两项技术在社交媒体分析、用户反馈处理、市场研究等多个领域有着广泛应用。

Code_流苏:在代码中寻诗意,在实践中觅真知 919

Hibernate懒加载解析

Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来弥补这种缺陷,但是这只是弥补而不是用了懒加载总体性能就提高了。 我们所说的懒加载也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象的时候才会访问数据库。

雪狼小记 1万+

Hibernate懒加载问题的5种解决方案

** 1、Hibernate基础 ** Hibernate基础,传送门 ** 2、什么是Hibernate懒加载 ** 当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性时,才会向数据库再一次发出查询语句。 例如,有一个对象是Employee,还有一个对象是Department。显然,对于Employee相对Department来说,是多对一的关系;而对于...

zhaohong_bo的专栏 8079

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

hibernate懒加载的原理和作用

一.什么是懒加载?他的作用?​ 延迟加载,也叫懒加载,它是hibernate为提高程序执行效率而提供的一种机制,即只有真正使用该对象的数据时才会创建。Hibernate中主要是通过代理(proxy)机制来实现延迟加载。它的具体过程:Hibernate从数据库获取某一个对象数据时、获取某一个对象的集合属性值时,或获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据,hibernate并不是

小黄鸡kimhuhg 4023

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

浅谈Hibernate懒加载与org.hibernate.LazyInitializationException

Hibernate懒加载 org.hibernate.LazyInitializationException

xdqkid的博客 4889

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

hibernate中懒加载禁用的方式

懒加载的概念:懒加载就是hibernate中的延迟加载,在hibernate中的一对多,多对多关系中通过对象导航来查询对象时一般默认的就是懒加载。就是当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性是,才会向数据库中再一次发出查询语句。懒加载在某些情况下确实可以减少不必要的sql语句,但是有的情况下,还是会抛出异常。

haha_66666的博客 4918

Hibernate 5.0以后的懒加载实现及懒加载失效问题解决

目前工作中有个需求,需要对单张表的某个字段使用大字段(长字符串)来存储数据。使用oracle存储,即该字段会使用CLOB来存储长字符内容。那么该字段通过jpa进行实体设计如图所示:其中@Basic指定为懒加载模式,这里对大字段使用懒加载模式是比较合适的,例如在列表查询时往往是不用直接展示该字段内容的,一般只有在修改或查看详情时才会进行该字段的展示,我本次的工作需求即是如此,故采用懒加载。

天下唯一的利哥哥的博客 1270

hibernate的懒加载和抓取策略解析

问题?hibernate的懒加载解析 什么是懒加载? 答:在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来弥补这种缺陷,但是这只是弥补而不是用了懒加载总体性能就提高了。 我们所说的懒加载也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象

Mr_li13的博客 1227

hibernate的懒加载异常

hibernate的懒加载异常 文章目录hibernate的懒加载异常1. 问题2. 解决3. 代码 1. 问题 ​ 最近写了一个demo,可是一直显示懒加载异常,自己也是很郁闷! [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmgKo3P0-1573324032700)(C:\Users\Administrator\AppData\Roaming\Typora...

qq_43251689的博客 320

hibernate懒加载问题

Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来弥补这种缺陷,但是这只是弥补而不是用了懒加载总体性能就提高了。 我们所说的懒加载也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象的时候才会访问数据库。

hom_va的专栏 967

hibernate懒加载(lazy加载)

所谓懒加载(lazy)就是延时加载,延迟加载。当两个及以上表使用hibernate来管理级联关系时,一个表被加载到jvm内存时,其相关表可以暂存在数据库的缓存中,当需要使用相关表数据时在加载到jvm内存中,通过懒加载机制可以减少内存中不必要的开销,以提高程序的性能。     需要注意的是,当使用懒加载时,如果将session关闭,则断开了与数据库的连接,此时如果要访问子表数据,由于子表数据是存放

猴子哥哥的博客 5417
上一篇: Hibernate第七篇【对象状态、一级缓存】
下一篇: eclipse复制到IDEA中文不匹配,编译失败
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值