zoukankan      html  css  js  c++  java
  • JavaEE Mybatis(四)延迟加载

    1. 延迟加载

    什么是延迟加载?延迟加载 的反义词就是 立即加载,

    立即加载 是指在取得“省”对象时(此处的数据库表:省包含市),省中所有的“市”对象都已经提取到内存中,因此其非常耗费 CPU 和内存资源。有时只需要省信息,而并不需要市信息,但立即加载还是把市信息也一同提取出来,这样的情况下就要使用延迟加载了。

    延迟加载 就是在使用到市对象时,再把其加载到内存中来,如果不使用市对象,就不加载到内存中,这就是延迟加载特性。

    2. 默认立即加载策略

    MyBatis 默认的行为就是 立即加载。

    当在程序中 调用到 List 中的 Userinfo 对象时,就采取了立即加载策略,立即将 Userinfo 对应的对象加载到内存中。

    3. 使用全局延迟加载策略与两种加载方式

    在配置文件中使用如下配置代码开始延迟加载:

    <settings>
          <setting name="logImpl" value="LOG4J" />
          <setting name="lazyLoadingEnable" value="true" />
    </settings>
    

    但延迟加载具体的实现方式分为两种。

    (1)获得子表时再进行加载。

    (2)打印主表信息时加载子表。

    这两种延迟加载的方式可以使用以下配置来进行切换,默认情况时第一种:

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

    更改配置文件。代码如下:

    <settings>
          <setting name="logImpl" value="LOG4J" />
          <setting name="lazyLoadingEnable" value="true" />
    </settings>
    

    4. 使用 fetchType 属性设置局部加载策略

    使用配置选项 lazyLoadingEnabled 和 aggressiveLazyLoading 设置的是全局加载行为。如果想针对某一个映射来决定是延迟加载还是立即加载,那么可以在 配置中使用 fetchType 属性来决定,属性值 eager 代表立即加载,属性值 lazy 代表延迟加载。

  • 相关阅读:
    MySQLdb 部署
    python 操作python
    python 面向对象(进阶篇)
    Python 面向对象(初级篇)
    Apache环境下强制http跳转至https的配置总结
    linux Apache设置https访问以及加载mod_ssl.so模块以及问题解决
    使用dd命令快速生成大文件或者小文件的方法
    Let’s Encrypt/Certbot移除/remove/revoke不需要的域名证书
    Vsphere中ESXi主机ssh开启的三种方法
    RackTables在LNMP系统的安装及使用
  • 原文地址:https://www.cnblogs.com/john1015/p/13959819.html
Copyright © 2011-2022 走看看