MyBatis延迟加载

当你要使用one to one,many to one 就会碰到N+1的问题。很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象,造成N+1的问题。

 

我们总是希望在我使用A对象的B的时候,那时候我再给数据库发条sql语句来查询,不要我查A的时候,把所有的B,C 这些全部查询来,这样性能慢的一米 。尴尬

 

而Mybatis 设置延迟加载主要2个属性配置:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE configuration   
  PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">  
  
<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
	</settings>
</configuration>   

 

lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true 

aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,将完全加载这个对象的所有懒对象属性。false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。默认为true

 

猜你喜欢

转载自anduo.iteye.com/blog/1876363