缓存介于应用程序和数据库之间,其作用是降低应用程序对物理数据库访问的频次,提高应用程序性能。应用程序在查询数据时,首先会在缓存中查找,如果命中则直接将数据返回,避免建立数据库查询的性能损耗。
MyBatis提供两级缓存:
-
一级缓存:
事务级别,由SqlSession管理维护。只能被当前事务访问,每个事务都有各自的缓存。缓存的生命周期依赖于事务的生命周期:当事务结束时,缓存的生命周期也会结束。
-
二级缓存:
应用(进程)级别,由SqlSessionFactory管理维护,可以被属于同一SqlSessionFactory的所有事务共享。缓存的生命周期依赖于应用的生命周期,当应用结束时,缓存的生命周期同时结束。
注意事项:可以在核心配置文件中开启MyBatis日志查看缓存使用情况(放在properties标签下方)
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
打开二级缓存:在Dao映射文件中增加<cache />标签
将实体类序列化(关联对象必须同时序列化)
public class User implements Serializable {
private String id;// 用户编号
private String name;// 用户名
private Integer age;// 年龄
private Category category;// 所属类别
private static final long serialVersionUID = 1L;
}
网友评论