欢乐狗 发表于 5 天前

16. MyBatis的耽误加载机制是什么?怎样配置?有哪些优缺点?



耽误加载(Lazy Loading)是MyBatis提供的一种机制,用于优化数据库查询性能。在启用耽误加载时,某些关联对象或集合只有在被实际访问时才会触发数据库查询,而不是在主对象加载时立刻加载。这种机制可以镌汰不必要的数据库查询,特别是在处理多表关联关系时非常有用。


耽误加载的配置

在MyBatis中,耽误加载可以通过配置文件中的设置来启用。重要有以下几个步骤:


1. 启用全局耽误加载

在MyBatis的全局配置中,通过lazyLoadingEnabled属性来启用耽误加载。
<configuration>
 <settings>
     <!-- 启用延迟加载 -->
     <setting name="lazyLoadingEnabled" value="true"/>
     <!-- 启用全局的关联对象延迟加载 -->
     <setting name="aggressiveLazyLoading" value="false"/>
 </settings>
</configuration>

[*] lazyLoadingEnabled:设置为true时,开启全局的耽误加载功能。假如设置为false,则耽误加载功能将被关闭,全部关联对象都会被立刻加载。
[*] aggressiveLazyLoading:设置为true时,MyBatis会立刻加载全部耽误加载的属性;设置为false时,MyBatis只在真正访问关联对象或集合时才加载。


2. 在resultMap中配置耽误加载

通过在resultMap中配置<association>或<collection>标签的fetchType属性来控制具体的耽误加载行为。
<resultMap id="userResultMap" type="User">
 <id property="id" column="id"/>
 <result property="username" column="username"/>
 <!-- 一对一关联的延迟加载 -->
 <association property="address" column="address_id"
                javaType="Address" select="selectAddressById" fetchType="lazy"/>
 <!-- 一对多关联的延迟加载 -->
 <collection property="orders" ofType="Order"
             select="selectOrdersByUserId" fetchType="lazy"/>
</resultMap>

[*] fetchType="lazy":表现这个关联关系将使用耽误加载。只有在访问address或orders属性时,MyBatis才会实行对应的SQL查询。
[*] fetchType="eager":表现这个关联关系会立刻加载。无论是否访问address或orders属性,对应的SQL查询都会在主对象加载时立刻实行。


耽误加载的优缺点



优点


[*] 镌汰数据库访问:耽误加载可以避免不必要的数据库查询,尤其在关联对象较多且有些关联对象不必要被立刻访问的情况下,可以明显镌汰数据库的访问次数。
[*] 进步性能:通过耽误加载,只有在真正必要时才加载数据,镌汰了系统的资源消耗,提升了应用步伐的相应速率。
[*] 按需加载数据:耽误加载使得步伐可以在必要时才获取数据,提供了更机动的数据加载策略,有助于处理大型和复杂的对象图。


缺点


[*] N+1查询题目:假如没有仔细设计,耽误加载可能导致N+1查询题目,即主对象查询一次,关联对象各自查询N次,从而增加了数据库的负担。
[*] 复杂性增加:使用耽误加载会增加系统的复杂性,开发职员必要更好地理解何时会触发数据库查询,并避免不必要的耽误加载造成的性能瓶颈。
[*] 调试困难:由于查询是在对象被访问时才触发的,调试过程中可能会出现意料之外的数据库访问,增加 了定位题目的难度。


总结

MyBatis的耽误加载机制通过在必要时才加载关联数据,可以有用镌汰不必要的数据库访问和资源消耗,从而提升性能。配置耽误加载通常涉及全局配置和resultMap中的fetchType设置。


[*] 启用方式:通过lazyLoadingEnabled和fetchType属性来配置。
[*] 优点:镌汰数据库查询、进步性能、按需加载数据。
[*] 缺点:可能导致N+1查询题目、增加系统复杂性、调试困难。
在实际应用中,耽误加载可以帮助优化数据库访问,但也必要仔细设计和测试,以避免潜伏的性能题目。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 16. MyBatis的耽误加载机制是什么?怎样配置?有哪些优缺点?