zoukankan      html  css  js  c++  java
  • 延迟加载

    十八.延迟加载

    概念:

    MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的select查询。例如在进行一对多查询的时候,只查询出一方,当程序中需要多方的数据时,mybatis再发出sql语句进行查询,这样子延迟加载就可以的减少数据库压力。MyBatis 的延迟加载只是对关联对象的查询有迟延设置对于主加载对象都是直接执行查询语句的。

    加载时机:

    • 直接加载:执行完对主加载对象的 select 语句,马上执行对关联对象的 select 查询。
    • 侵入式延迟: 执行对主加载对象的查询时,不会执行对关联对象的查询。但当要访问主加载对象的详情属性时,就会马上执行关联对象的select查询。
    • 深度延迟: 执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也不会执行关联对象的select查询。只有当真正访问关联对象的详情时,才会执行对关联对象的 select 查询。

    注意:延迟加载的应用要求:关联对象的查询与主加载对象的查询必须是分别进行的select语句,不能是使用多表连接所进行的select查询。因为,多表连接查询,实质是对一张表的查询,对由多个表连接后形成的一张表的查询。会一次性将多张表的所有信息查询出来。

    侵入式延迟加载配置方法:

    Mybatis-config.xml大配置文件,首先开启延迟加载,然后再配置侵入式加载

     

    不调用主加载对象时只有一条SQL

     

    调用主加载对象的信息时会产生两条SQL

     

    深度延迟加载方式:

    Mybatis-config.xml大配置文件,首先开启延迟加载,然后再配置深度加载

     

    调用主加载对象时不会执行第二条加载SQL

     

    调用关联对象详细信息时会执行第二次查询

     

  • 相关阅读:
    数据库基础理解学习-Mysql
    玫瑰花小制作分享-JavaScript(七夕专属浪漫)
    爬虫探索Chromedriver+Selenium初试
    Python 数据结构理解分享
    Python 实用第三方库安装方法
    Python安装-Pycharm+Anaconda
    oracle父子级查询数据树结构
    如何查看class文件的编译jdk版本号
    PL/SQL developer 11.0注册码
    linux 下tomcat出现 Native memory allocation (malloc) failed to allocate 1915224064 bytes for committing reserved memory问题
  • 原文地址:https://www.cnblogs.com/wang01/p/11686857.html
Copyright © 2011-2022 走看看