我是靠谱客的博主 自然抽屉,最近开发中收集的这篇文章主要介绍MyBatis-延迟加载与MyBatis缓存(面试题)MyBatis-延迟加载与MyBatis缓存-概念性,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
MyBatis-延迟加载与MyBatis缓存-概念性
MyBatis-延迟加载与MyBatis缓存
- MyBatis-延迟加载与MyBatis缓存-概念性
-
- 延迟加载(面试题)
-
- 1、什么是延迟加载(按需加载)
- 2、延迟加载
- MyBatis缓存(面试题)
-
- 1、Cache缓存
- 2、MyBatis缓存分析
- 3、一级缓存
- 4、二级缓存
-
- 原理
- 开启二级缓存
- 5、禁用二级缓存
- 6、刷新二级缓存
延迟加载(面试题)
1、什么是延迟加载(按需加载)
resultMap中的association(has a)和collection(has some)标签具有延迟加载的功能。
延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。需要关联信息时再去按需加载关联信息。这样会大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。
- 设置延迟加载(配置问题使用代码演示)
Mybatis默认是没开启延迟加载功能的,我们需要手动开启。 - 需要在mybatis-config.xml文件中,在标签中开启延迟加载功能。
lazyLoadingEnabled、aggressiveLazyLoading
在最新官方MyBatis文档里,有上面这2个属性,一个是延迟加载,一个是分层加载。
lazyLoadingEnabled 默认值为false,那么在有级联关系的resultMap里,查询后会加载出所有的级联关系,当然有时候我们并不需要这些所有的时候,我们就可以应用到延迟加载给我们带来的好处了。
aggressiveLazyLoading默认值是true,这里我称之为分层加载,大概意思是如果它为true,那么当我使用了延迟加载,要么所有级联都不加载,
要么如果我加载一个,其他都得加载.
aggressiveLazyLoading值是false 那么就是按需加载,如果是true表示只要使用一个级联对象,就全部加载!
- 全部配置
- 局部配置
fetchType是可以注明在association 和 collection里的,选值为eager和lazy,就是为了方便我们结合aggressiveLazyLoading(false)
来配合使用的,让延迟加载发挥到极致,即只加载我需要的!
如果全局和局部同时生效,那么就近原则,局部生效!
2、延迟加载
以下是resultMap对应的POJO
- Student:
public class Student {
private Integer id;
private String studentName;
private String studentAge;
private List studentHealthCards;
private ParentOfStudent parentOfStudent;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getStudentAge() {
return studentAge;
}
public void setStudentAge(String studentAge) {
this.studentAge = studentAge;
}
public List getStudentHealthCards() {
return studentHealthCards;
}
public void setStudentHealthCards(List studentHealthCards) {
this.studentHealthCards = studentHealthCards;
}
public ParentOfStudent getParentOfStudent() {
return parentOfStudent;
}
public void setParentOfStudent(ParentOfStudent parentOfStudent) {
this.parentOfStudent = parentOfStudent;
}
@Override
public String toString() {
最后
以上就是自然抽屉为你收集整理的MyBatis-延迟加载与MyBatis缓存(面试题)MyBatis-延迟加载与MyBatis缓存-概念性的全部内容,希望文章能够帮你解决MyBatis-延迟加载与MyBatis缓存(面试题)MyBatis-延迟加载与MyBatis缓存-概念性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复