实现延迟加载,必须在核心配置文件中设置全局配置信息:
- lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象(分布查询第二第三...布)都会延迟加载 。
- aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。 否则,每个属性会按需加载 此时就可以实现按需加载,获取的数据是什么,就只会执行相应的sql。
- 此时可通过association和 collection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType="lazy(延迟加 载)|eager(立即加载)"
- 延迟加载默认是关闭的,所以我们需要将lazyLoadingEnabled设置为true,将aggressiveLazyLoading设为false(默认就是)。
1、 没有开启延迟加载的情况
2、开启了延迟加载的情况:
注意还和xml文件中分布加载时的这个属性有关,不设置就只和前面seetings有关