Mybatis_缓存知识
应用程序与数据库进行交互,相对耗时,通过缓存查询结果,可以在一定程度上减少此耗时。
在SQL映射文件中,一个select标签对应的一个statement对象。(以下session指的是SqlSession,factory指的是SqlSessionFactory)
一级缓存
Mybatis是默认开启一级缓存的。
即Session缓存,同一个session对象执行同一个statement对象时,会优先从缓存中读取。
注意:就算标签内查询语句相同,如果不是同一个标签,即不为同一个statement对象,则不会在缓存中查到。
二级缓存
在factory层面的缓存。
通过某个factory创建的session对象,在它commit或者close之后,会把自己的缓存提交给factory缓存。
此时同一个factory创建的其它session对象就能够读取这些缓存。
注意:当session对象未提交或关闭时,不会把自己的缓存提交到factory缓存中。
开启二级缓存:
在sql映射文件中使用标签cache,设置readOnly属性为true。
<cache readOnly="true"></cache>