MyBatis延迟加载及在spring中集成配置



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

 

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

  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <!DOCTYPE configuration     
  3.   PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">    
  4.     
  5. <configuration>  
  6.     <settings>  
  7.         <setting name="lazyLoadingEnabled" value="false"/>  
  8.         <setting name="aggressiveLazyLoading" value="true"/>  
  9.     </settings>  
  10. </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

 

   加载所有懒对象

  1. <configuration>  
  2.     <settings>  
  3.         <setting name="lazyLoadingEnabled" value="true"/>  
  4.         <setting name="aggressiveLazyLoading" value="true"/>  
  5.     </settings>  
  6. </configuration>    
<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="true"/>
	</settings>
</configuration>  

 

   按需加载对象属性

<configuration>  

  1.     <settings>  
  2.         <setting name="lazyLoadingEnabled" value="true"/>  
  3.         <setting name="aggressiveLazyLoading" value="false"/>  
  4.     </settings>  
  5. </configuration>   
<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
	</settings>
</configuration>  

对继承spring配置如下:

  1. <bean id="sqlSessionFactory"  
  2.     class="org.mybatis.spring.SqlSessionFactoryBean">  
  3.     <property name="configLocation" value="classpath:setting.xml"/>  
  4.     <property name="dataSource" ref="dataSource" />  
  5. </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全局属性配置文件。

时间: 2024-10-03 01:31:49

MyBatis延迟加载及在spring中集成配置的相关文章

Spring中如何配置DataSource数据源

在Spring框架中有如下3种获得DataSource对象的方法: 1.从JNDI获得DataSource. 2.从第三方的连接池获得DataSource. 3.使用DriverManagerDataSource获得DataSource. 一.从JNDI获得DataSource SpringJNDI数据源配置信息: <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean&qu

总结Spring中XML配置的十二个最佳实践

Spring是一个强大的JAVA应用框架,广泛地应用于JAVA的应用程序.为PlainOldJavaObjects(POJOs)提供企业级服务.Spring利用依赖注入机制来简化工作,同时提高易测性.Springbeans及依赖,以及beans类所需的服务都在配置文件中进行了详细的说明,这个配置文件是典型的XML格式.但是它既冗长又不实用.对于需要定义大量Springbeans的大工程来说,我们难以阅读和管理它. 在这篇文章里,对于SpringXML的配置,我将向你展示12种比较好的实践.其中的

Struts2+spring+ibatis集成配置

问题描述 struts2+spring+ibatis如何进行集成配置,那位大虾能把集成步骤及配置贴出来..小弟感激不尽 解决方案 解决方案二:这个只能你自己去找资料按照上面的一步步做如果报错了再来找方法告诉你怎么配也是肯定会报错的就算是源码给你可能也要报错解决方案三:每一个框架的搭建方式都一样,提醒你一点可能会出错的地方:struts和spring整合需要一个jar包:struts-spring-plugin-2.1.1.0.jar解决方案四:struts1.2metoo解决方案五:哈,已经解决

Spring中XML配置的12个技巧

Spring利用依赖注入可以获得简单而有效的测试能力.Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式.然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制. 在这篇文章中我将给你展示12种的有关Spring XML配置文件的最佳技巧.请注意另外一些因素,例如域模型的设计,会影响到XML配置,但是这篇文章更关注于XML配置的可读性和可操控性. 1.避免使用自动装配 Spring可以通过be

spring中bean配置和bean注入

1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean缓存池中,以供外层的应用程序进行调用. 1 bean配置 bean配置有三种方法: 基于xml配置Bean 使用注解定义Bean 基于java类提供Bean定义信息 1.1 基于xml配置Bean  对于基于XML的配置,

在Spring中如何处理配置动态代理生成不同bean实现?

问题描述 最近在做一个老系统的数据库移植工作,从oracle一直到mysql,但是由于mysql数据不完整,需要先查询mysql,如果没有再去查oracle,待完整后再去掉oracle.我的想法是,抽象出dao接口,然后2套实现逻辑,最后用代理模式处理先后查询.代码如下:publicinterfaceUserDAO{publicvoidfind();}classUserDAOOracleImplimplementsUserDAO{publicvoidfind()..}classUserDAOMy

Spring中bean配置的继承

In Spring, the inheritance is supported in bean configuration for a bean to share common values, properties or configurations. A child bean or inherited bean can inherit its parent bean configurations, properties and some attributes. In additional, t

spring中配置MySql数据源,怎样配置数据库信息

问题描述 我安装的Mysql5.1,进入命令模式时需要密码:自己设置的(mysql)有一个默认的数据库test,我想连接这个库,或者其他库怎么连接呢?spring中的配置如下:<bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClass

【Spring实战】—— 4 Spring中bean的init和destroy方法讲解

本篇文章主要介绍了在spring中通过配置init-method和destroy-method方法来实现Bean的初始化和销毁时附加的操作. 在java中,我们并不需要去管理内存或者变量,而在C或C++中,可以通过new和delete等方式来创建和删除变量或者对象.在Spring中,如果想要对一个bean进行初始化和结束附加一定的操作,则可以使用上述的两个方法来实现. 在介绍这两个方法前,读者需要了解Spring中bean的生命周期,最常使用的两种生命周期是:singleton和prototyp