关于mybatis一级、二级缓存的快速记忆

一级缓存,sqlsession级别,默认开启,数据库会话结束,它就自然消亡,即,sqlsession.close(),会释放掉一级缓存PerpetualCache对象,一级缓存将不可用。

另外,调用了clearCache(),会清空PerpetualCache对象中的数据,但是该对象仍可使用,同时,SqlSession中执行了任何一个update操作(update()、delete()、insert()) ,都会清空PerpetualCache对象的数据,但是该对象可以继续使用。

二级缓存是Application级别的缓存,默认是不开启的,二级缓存需要进行配置,POJO必须是可序列化的。 也就是要求实现Serializable接口,映射XML文件配置配置<cache/>。

注意事项:

所有select语句将会被缓存

所有insert、update和delete语句会刷新缓存

使用默认的Least Recently Used(LRU,最近最少使用的)算法来收回

缓存不会以任何时间顺序来刷新

缓存会存储列表集合或对象(无论查询方法返回什么)的1024个引用

缓存会被视为是read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全的被调用者修改,不干扰其他调用者或线程所做的潜在修改。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章