私人笔记,不喜勿喷,喷就揍你
一级缓存不跨sqlsession,不同的sqlsession中的一级缓存不同,每次查询的时候先去一级缓存中查,若没有再到数据库查询,然后存入一级缓存,若执行了commit操作,一级缓存则被清空,设计成会清空是为了防止脏读,一级缓存不需要在.xml中进行设置,默认开启
正式开发时,事务由spring管理,发生在service中,一个service中包括很多mapper方法的调用,当事务开启时,创建一个sqlsession,事务结束时,关闭sqlsession,所有一个service可以使用1级缓存。
二级缓存,默认不开启,每一个namespace有一个二级缓存区域,如果两个mapper的namespace相同,它们的二级缓存区域是同一个。执行commit也会清空对应的二级缓存。
二级缓存的开启,在sqlMapConfig.xml和对应的mapper.xml中都需要进行配置
在mapper.xml中的配置,写一个<cache/>标签就可以了,标签里的参数需要时再配置
禁用二级缓存
二级缓存的存储介质不固定,可以是内存也可以是硬盘,或者是远程服务器,所以要求pojo实现序列化接口
session不关闭,数据写不到二级缓存区域
=================================华丽的分割线============================
测试用的: