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

1.1.1. 延迟加载的概念

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

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

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

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

<!-- 延迟加载: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" />

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

fetchType:加载方式。

lazy:延迟加载。

eager:立即加载。

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

时间: 2024-12-24 12:39:24

MyBatis应用开发(16)延迟加载之概念的相关文章

MyBatis应用开发(17)延迟加载之应用

1.1.1. 没有使用延迟加载的情况 在没有进行任何特定配置的情况下MyBatis默认是关闭了延迟加载功能,即使用立即加载. 在SqlMapConfig.xml中确认关闭了延迟加载功能. <!-- 延迟加载:true, 立即加载:false,默认false --> <setting name="lazyLoadingEnabled" value="false" /> <!-- 侵略性延迟加载 : 默认false(3.4.2以及更新版本M

MyBatis应用开发(18)延迟加载之延迟加载触发方法(lazyLoadTriggerMethods)

1.1.1. 使用lazyLoadTriggerMethods lazyLoadTriggerMethods默认情况下仅仅支持自动将equals,clone,hashCode,toString这几个方法定义为延迟加载的加载触发方法. 如果将Person的doLazyLoadingNow()方法加入这个列表中,则调用doLazyLoadingNow()方法将会导致Person上的所有延迟加载属性的关联对象被执行加载. 在SqlMapConfig.xml中配置了doLazyLoadingNow方法.

mybatis教程(二):概念总结

一.注意规范 注意:(1).XXXmapper.xml 文件中的 namespace 等于mapper 接口地址 (2).XXXmapper.java 接口中的方法输入参数和 mapper.xml 中statement的parameterType指定的  类型一致. (3) .mapper.java 接口中的方法的返回值类型和mapper.xml中statement的resultType指定的类型一致 二.配置文件及标签介绍 1. properties 介绍 可以将数据连接单独配置在 db.pr

SSM 即所谓的 Spring MVC + Spring + MyBatis 整合开发。

SSM 即所谓的 Spring MVC + Spring + MyBatis 整合开发.是目前企业开发比较流行的架构.代替了之前的SSH(Struts + Spring + Hibernate) 计划的架构组合 Sping MVC + Spring + MyBatis(非Ajax版) Sping MVC + Spring + MyBatis(Ajax版) Sping MVC + Spring + MyBatis(Ajax版 + JavaConfig) Spring Boot + MyBatis

mybatis入门基础(七)----延迟加载

一.什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求:如果查询订单并且关联查询用户信息.如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息.把对用户信息的按需去查询就是延迟加载. 延迟加载:先从单表查询.需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快. 二.使用association实现延迟加

16.iptable基本概念

16.iptable基本概念 ·网路访问控制: ·Linux一般作为服务器系统使用,对外提供一些基于网络的服务, ·通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能, ·常见的访问控制包括:哪些ip可以访问服务器.可以使用哪些协议,哪些接口.是否需要对数据包进行修改等, ·如服务器可能受到来自某ip的攻击,这时就需要禁止所有来自该ip的访问, ·Linux内核继承了网络访问控制功能,通过netfilter模块实现, ·IPTables: ·Linux内核通过netfilter模块实现

Android开发环境中的概念和工具介绍

最近学习Android开发,以前使用C/C++多一些,现在再补点Java知识,不管是哪种语言,都不过是一种工具而已,真的学起来,大同小异,无谓优劣.学习Android编程肯定是要先从环境搭建开始,无论是在Windows.还是Linux.Mac环境都可以,在搭建环境之前,有些概念综合了解一下确有必要,本文即是面向Android初学者的文章,作为Android入门的启蒙篇章. Android是Google主导开发的基于Linux开源智能移动终端操作系统,当然这里说的开源,也不是说Google把所有的

菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)

菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上) 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)

MyBatis应用开发(5)应用之几个重要概念

1.1. 重要概念 1.1.1. SqlSessionFactory接口 SqlSessionFactory是MyBatis的一个接口,定义了创建SqlSession的openSession()方法的多种重载形式.实际对象由SqlSessionFactoryBuilder这个类通过创建者设计模式(builder Pattern)来创建.SqlSessionFactoryBuilder类主要提供了不同途径创建实现了SqlSessionFactory接口的对象的build()方法的多种重载形式.Sq