mybatis缓存

一级缓存:

Mybatis 连接数据库时,会开启一个数据库会话, 创建一个新的SqlSession  对象   SqlSession中有一个Executor  对象,该对象持有一个新的  PerpetualCache 对象,会话结束后,SqlSession以及内部的Executor 对象 PerpetualCache 对象会也一并释放掉

如果SqlSession对象调用了close() 将 释放掉 PerpetualCache  对象,一级缓存将不可用。

如果SqlSession调用了clearCache(),会清空  PerpetualCache  对象中的数据,但是该对象仍可使用。

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

 

 

二级缓存:

级缓存默认是不开启的,二级缓存的开席需要进行配置,实现二级缓存的时候,MyBatis要求返回的POJO必须是可序列化的。 也就是要求实现Serializable接口,配置方法很简单,只需要在映射XML文件配置就可以开启缓存了,如果我们配置了二级缓存就意味着:

  • 映射语句文件中的所有select语句将会被缓存。
  • 映射语句文件中的所有insert、update和delete语句会刷新缓存。
  • 缓存会使用默认的Least Recently Used(LRU,最近最少使用的)算法来收回。
  • 根据时间表,比如No Flush Interval,(CNFI没有刷新间隔),缓存不会以任何时间顺序来刷新。
  • 缓存会存储列表集合或对象(无论查询方法返回什么)的1024个引用
  • 缓存会被视为是read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全的被调用者修改,不干扰其他调用者或线程所做的潜在修改。

 

 

 

你可能感兴趣的:(java,mybatis)