mybatis缓存:
一级缓存
SQLsession的缓存----默认开启
对于同一个session对象,进行两次查询数据的操作,第二次的session查询操作,不会去查询数据库,而是使用的SQLsession的缓存
只会进行一次查询数据库的操作,cache hit 是后面配置的二级缓存
二级缓存:
缓存里的数据是不安全的
做到从不同的缓存中共享数据(重要的数据:银行卡密码不要放到缓存中),需要手动开启
在映射mapper文件中配置,没有配置二级缓存的,不会走缓存数据,只有配置了缓存的mapper才会走缓存
参数都是固定的:各参数的含义
eviction: ⼆级缓存中,缓存的对象从缓存中移除的策略,回收策略为先进先出
flushInterval: 刷新缓存的事件间隔,单位:毫秒
size: 缓存对象的个数
readOnly: 是否是只读的、
二级缓存有效指定的是同一个sessionFactory生产出的不同的session
这里的 hit值,表示查询两次,其中一次用到了缓存,所以是 1/2
注意:使用二级缓存时,与查询结果映射的java对象必须实现java.io.Serializable接⼝的序列化和反序列化操作,如果存在⽗类,其成员都需要实现序列化接⼝,实现序列化接⼝是为了对缓存数据进⾏序列化
和反序列化操作,因为⼆级缓存数据存储介质多种多样,不⼀定在内存,有可能是硬盘或者远程服务器。二级缓存有可能存储到文件中,所以最好加上序列化接口