MyBatis延迟加载及在spring中集成配置
2015-01-20 11:53
507 查看
当你要使用one to one,many to one 就会碰到N+1的问题。很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象,造成N+1的问题。
而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="false"/>
<setting name="aggressiveLazyLoading" value="true"/>
</settings>
</configuration>
lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true
aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,将完全加载这个对象的所有懒对象属性。false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。默认为true
加载所有懒对象
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="true"/>
</settings>
</configuration>
按需加载对象属性
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
</configuration>
对继承spring配置如下:
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:setting.xml"/>
<property name="dataSource" ref="dataSource" />
</bean>
setting.xml是mybatis全局属性配置文件。
当你要使用one to one,many to one 就会碰到N+1的问题。很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象,造成N+1的问题。
而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="false"/>
<setting name="aggressiveLazyLoading" value="true"/>
</settings>
</configuration>
<?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="false"/> <setting name="aggressiveLazyLoading" value="true"/> </settings> </configuration>
lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true
aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,将完全加载这个对象的所有懒对象属性。false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。默认为true
加载所有懒对象
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="true"/>
</settings>
</configuration>
<configuration> <settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="true"/> </settings> </configuration>
按需加载对象属性
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
</configuration>
<configuration> <settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="false"/> </settings> </configuration>
对继承spring配置如下:
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:setting.xml"/>
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:setting.xml"/> <property name="dataSource" ref="dataSource" /> </bean>
setting.xml是mybatis全局属性配置文件。
相关文章推荐
- MyBatis延迟加载及在spring中集成配置
- Spring集成mybatis时配置propertyPlaceholder加载dataSource失效
- mybatis+spring 整合配置延迟加载
- 初学Java三大框架集成需要掌握的基本配置[Spring,MyBatis,Struts]
- SqlMapConfig.xml --- 在spring配置文件中自动加载的mybatis文件
- Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明
- mybatis-spring集成:配置多数据库源中遇到的问题
- mybatis-spring集成:配置多数据库源中遇到的问题
- Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)
- jersey spring shiro mybatis mysql集成配置
- Spring3.0和Mybatis的集成,含事务配置
- Spring tomcat jdbc pool mybatis 集成配置
- Spring tomcat jdbc pool mybatis 集成配置
- Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明
- springmvc+mybatis集成配置
- Spring tomcat jdbc pool mybatis 集成配置
- SqlMapConfig.xml---在spring配置文件中自动加载的mybatis文件
- Mybatis3.2.1使用例三:Mapper方式集成Spring、配置文件提供SQL
- 框架 day66 Mybatis(关联查询映射(1对1/多),延迟加载,一级/二级缓存,与spring整合,逆向工程)
- Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明