mybatis应用开发(16)延迟加载之概念

     2022-03-17     534

关键词:

1.1.1. 延迟加载的概念

延迟加载是指在存在关联关系时,在加载主表数据时,仅仅加载主表数据到映射的Java Bean对象中,而不会立即将关联的子表数据加载到存在关联关系的从属Java Bean中。在访问到关联的Java Bean的有关方法时,才会加载子表到关联的从属Java Bean中。

 

使用嵌套查询时,MyBatis支持延迟加载功能。

 

MyBatis提供了2种方式控制延迟加载与否。

方式一:在SqlMapConfig.xml文件中使用3setting结点控制整个程序中的associationcollection涉及的关联关系是否使用延迟加载。

 

<!-- 延迟加载:true,  立即加载:false,默认false -->

<setting  name="lazyLoadingEnabled" value="true" />

 

<!-- 侵略性延迟加载 : 默认false(3.4.2以及更新版本MyBatis)

   true:访问主表数据对应的Java Bean的代理对象任何方法将导致所有的延迟加载属性关联对象被立即加载。此时导致lazyLoadingEnabled失效。

   false:关联对象不会被立即加载。

-->

<setting  name="aggressiveLazyLoading" value="false" />

 

<!-- 在使用延迟加载之后,访问主表数据对应的Java Bean的代理对象的哪些方法将导致加载被触发。此处触发加载时将加载该Java Bean的所有延迟加载属性关联对象对应的数据。

    默认值:equals,clone,hashCode,toString。  

 -->

<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />

 

 

方式二:在associationcollection使用fetchType属性控制单个语句的延迟加载。

 fetchType:加载方式。

        lazy:延迟加载。

        eager:立即加载。

 

fetchType在使用后会覆盖setting中的全局配置,即使用了fetchType的语句,其延迟加载与否是由fetchType决定。

 

mybatis探究之延迟加载和缓存

mybatis探究之延迟加载和缓存一、什么是延迟加载1.延迟加载的概念在mybatis进行多表查询时,并非所有的查询都需要立即进行。例如在查询带有账户信息的用户信息时,我们们并不需要总是在加载用户信息时就一定要加载他的账... 查看详情

mybatis应用开发(18)延迟加载之延迟加载触发方法(lazyloadtriggermethods)

1.1.1. 使用lazyLoadTriggerMethods lazyLoadTriggerMethods默认情况下仅仅支持自动将equals,clone,hashCode,toString这几个方法定义为延迟加载的加载触发方法。如果将Person的doLazyLoadingNow()方法加入这个列表中,则调用doLazyLoadingNow()方法将会... 查看详情

mybatis从入门到精通—源码剖析之延迟加载源码细节(代码片段)

什么是延迟加载?在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定要加载他的订单信息。此时就是我们所说的延迟加载。举个栗⼦:延迟加载就是在需要⽤到数据时才进⾏加载,不需要⽤到数据时就不加载数据... 查看详情

mybatis从入门到放弃六:延迟加载一级缓存二级缓存

...么查询海量数据则又离不开性能,那么这篇中我们就看下mybatis高级应用之延迟加载、一级缓存、二级缓存。使用时需要注意延迟加载必须使用resultMap,resultType不具有延迟加载功能。 一、延迟加载    延迟加载... 查看详情

mybatis延迟加载和缓存

一、延迟加载1.主对象的加载:根本没有延迟的概念,都是直接加载。2.关联对象的加载时机:01.直接加载:访问主对象,关联对象也要加载02.侵入式延迟:访问主对象,并不加载关联对象访问主对象属性的属性的时候,关联对... 查看详情

javaorm框架之mybatis(ibatis)详解(代码片段)

目录Mybatis基础概念Mybatis开放方式演进Mybatis框架核心要点关联查询延迟加载(懒加载)动态SQLMybatis缓存Mybatis逆向工程PageHelper分页插件注解开发Mybatis基础概念Mybatis是一个持久层框架它对JDBC操作数据库进行封装,让我们更关注SQL本身... 查看详情

mybatis-04懒加载&缓存&注解开发

1.Mybatis延迟加载策略1.1什么是延迟加载(懒加载)?简单的说,就是要用到数据时才加载,否则不加载。好处:先单表查询,要用时才去关联查询,提高数据库性能。坏处:大批量数据查询的时候,查询可能消耗时间,影响用户体... 查看详情

mybatis(代码片段)

目录JNDIMybatis中的延迟加载使用assocation实现延迟加载使用Collection实现延迟加载Mybatis中的缓存  Mybatis中的一级缓存和二级缓存     一级缓存     二级缓存Mybatis中的注解开发1mybatis的常用注解说明2使用Mybatis注解实现基本CRUD... 查看详情

mybatis入门基础----延迟加载

...延迟加载二、使用association实现延迟加载三、延迟加载在mybatis核心配置文件sqlMapConfig.xml中的配置回到顶部一、什么是延迟加载  resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collectio... 查看详情

mybatis查询延迟加载

Mybatis查询延迟加载 1.1     启用延迟加载      Mybatis的延迟加载是针对嵌套查询而言的,是指在进行查询的时候先只查询最外层的SQL,对于内层SQL将在需要使用的时候才查询出来。Mybatis的延迟加载默认是关闭的ÿ... 查看详情

mybatis懒加载

 懒加载的概念MyBatis中的延迟加载,也称为懒加载,是指进行关联查询时,按需执行子查询。当程序需要获取|使用关联对象时,mybatis再执行子查询,这样可以减轻数据库的压力。  懒加载的适用场景:当前业务只使用... 查看详情

mybatis延迟加载

...要设置两个选项<!--配置参数--><settings><!--开启mybatis支持延迟加载--><settingname="lazyLoadingEnabled"value="true"/><!--关闭调用任意方法立即加载,每 查看详情

mybatis学习——分步查询与延迟加载

声明:面试是遇到延迟加载问题,在网页搜索到此篇文章,感觉很有帮助,留此学习之用!一、分步查询分步查询通常应用于关联表查询,如:电商平台,查询订单信息时需要查询部分的用户信息;OA系统查询个人信息时需要查... 查看详情

mybatis延迟加载缓存逆向工程

一、Mybatis中的延迟加载   1、延迟加载背景:Mybatis中Mapper配置文件中的resultMap可以实现高级映射(使用association、collection实现一对一及一对多(多对多)映射),同样的association、collection具备延迟加载功能。所谓延迟加载,... 查看详情

一文搞定mybatis一对多延迟加载,并且子查询中与主表字段不对应(代码片段)

Mybatis一对多延迟加载,并且子查询中与主表字段不对应应用说明。实现一对多关联(懒加载),一个教研组对应多个教师,既:教师的教研编号与教研组的教研编号关联,并且教师关联教研组外键与教... 查看详情

一文搞定mybatis一对多延迟加载,并且子查询中与主表字段不对应(代码片段)

Mybatis一对多延迟加载,并且子查询中与主表字段不对应应用说明。实现一对多关联(懒加载),一个教研组对应多个教师,既:教师的教研编号与教研组的教研编号关联,并且教师关联教研组外键与教... 查看详情

mybatis-延迟加载

   立即加载:只要一调用就立即发起加载。举例:一个用户有100个账户,查询账户时有必要把用户信息也显示出来。  延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时... 查看详情

mybatis学习11mybatis中的延迟加载

1.什么是延迟加载  举个例子:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。所以延迟加载即先从单表查询... 查看详情