您的位置:首页 > 其它

Mybatis的延迟加载

2016-07-19 09:40 225 查看
1)延迟加载:

     先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。

      resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 延迟加载的属性:fetchType="lazy"

2)缓存及设置。

二级缓存是针对namespace下的缓存,开启mapper下的二级缓存:

   <cache/>useCache配置  在statement中设置useCache=false可以禁用当前select语句的二级缓存,即每次查询都会发出sql去查询,默认情况是true,即该sql使用二级缓存。

<selectid="findOrderListResultMap" resultMap="ordersUserMap"useCache="false"> 。

总结:针对每次查询都需要最新的数据sql,要设置成useCache=false,禁用二级缓存。

 

 1.一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。

2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。

3. 对于缓存数据更新机制,当某一个作用域(一级缓存Session/二级缓存Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被clear。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: