美文网首页
懒加载与急加载FetchType.LAZY&FetchType.

懒加载与急加载FetchType.LAZY&FetchType.

作者: CoderZS | 来源:发表于2017-08-01 01:37 被阅读0次

1、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。2、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。3、比方User类有两个属性,name跟address,登录后用户名是需要显示出来的,此属性用到的几率极大,要马上到数据库查,用急加载;而用户地址大多数情况下不需要显示出来,只有在查看用户资料是才需要显示,需要用了才查数据库,用懒加载就好了。所以,并不是一登录就把用户的所有资料都加载到对象中,于是有了这两种加载模式。

我们来用一个典型的案例作对比
一个用户有编号 用户名 ......和角色,正常情况下用户登录后不需要查询角色,但是现在我们想要查询到角色 一个用户可以有多个角色,员工角色是两张表 ,一般我们在项目配置中都是配置延迟加载(懒加载)

<configuration>
<!-- 启用延迟加载 -->
 <settings>
    <setting name="lazyLoadingEnabled" value="true" />
    <!--&lt;!&ndash;设置为false之后表示在访问many方的属性(非关联的对象的属性)的时候不要触发延迟加载&ndash;&gt;-->
    <setting name="aggressiveLazyLoading" value="false" />
    <!--&lt;!&ndash;当访问Object中的clone方法的时候触发延迟加载&ndash;&gt;-->
    <setting name="lazyLoadTriggerMethods" value="clone" />
</settings>

</configuration>
延迟加载

我们在项目中有查询角色的sql(根据员工编号查询角色)

<collection property="roles" ofType="Role"
    select="com.jd.wms.mapper.RoleMapper.selectRolesByEmployeeId"
    column="id">
</collection>

调用RoleMapper里的方法查询角色


EmployeeMapper.xml

sql查询出结果每一个用户id编号对应的角色

<select id="selectRolesByEmployeeId" resultMap="base_mapper">
    select r.* from t_employees_roles er join t_role r on er.role_id=r.id 
    where er.employee_id = #{empId}
</select>
RoleMapper.xml

查询出的结果是

查询结果

我们明明写了查询语句但是却没有查询到原因就是我们启用了延迟加载

现在我们的需求是需要把角色也显示出来怎么破?
这时我们就需要使用fetchType.eager(急加载)
添加一个属性fetchType="eager"

<collection property="roles" ofType="Role"   
 select="com.jd.wms.mapper.RoleMapper.selectRolesByEmployeeId"
 column="id" fetchType="eager">
</collection>
fetchType.eager

这时我们发送请求得到的结果就是

相关文章

  • 懒加载与急加载FetchType.LAZY&FetchType.

    1、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。2、FetchT...

  • Swift语法点

    1 懒加载 懒加载与OC中的懒加载的区别:懒加载的类一旦 设置为nil 后, 懒加载就不会再次执行,与OC中不同,...

  • 图片懒加载

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。 预...

  • 前端性能优化

    (1)懒加载与预加载 懒加载的场景 图片进入可视区域之后进行资源请求 减少无效资源的加载 并发加载的资源过多会阻塞...

  • javascript图片懒加载与预加载的分析

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:前一篇文章有介绍:JS图片延迟加载 延迟加载图片或符合某些条件时才...

  • iOS开发,懒加载

    什么是懒加载? 懒加载--比较懒的加载方式,需要的时候才加载,也称为延时加载。 所谓懒加载既是重写get方法,一定...

  • iOS开发UI篇-懒加载、重写setter方法赋值

    一、懒加载 1.懒加载定义 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的...

  • web优化之懒加载和预加载

    懒加载和预加载是常用的web优化的手段。所以我们首先应该明白什么是懒加载和预加载。懒加载:懒加载也加延迟加载,延迟...

  • iOS懒加载注意事项

    懒加载 1.懒加载 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其ge...

  • 懒加载和预加载

    懒加载和预加载 1. 懒加载 1. 什么是懒加载? 懒加载也就是延迟加载 当访问一个页面的时候,先把img元素或是...

网友评论

      本文标题:懒加载与急加载FetchType.LAZY&FetchType.

      本文链接:https://www.haomeiwen.com/subject/fdpdlxtx.html