您的位置:首页 > 教育 > 培训 > 深圳在线招聘_百度短链接生成网址_广州品牌营销服务_百度识图官网

深圳在线招聘_百度短链接生成网址_广州品牌营销服务_百度识图官网

2024/12/26 21:42:23 来源:https://blog.csdn.net/2301_78566776/article/details/144454703  浏览:    关键词:深圳在线招聘_百度短链接生成网址_广州品牌营销服务_百度识图官网
深圳在线招聘_百度短链接生成网址_广州品牌营销服务_百度识图官网

目录

​编辑

一、MyBatis运行顺序

二、一级缓存

(1)一级缓存失效的四种情况

1.查询时所使用的sqlSession不同

2.sqlSession相同但是当前查询条件不同

3.sqlSesssion相同,但两次查询之间进行了增删改的操作

4.手动清除了一切缓存

三、二级缓存

(1)开启二级缓存的四个条件

(2)Cache参数


一、MyBatis运行顺序

在Test类中,在@Test注解前还有@Before和@After注解,其中@Before在测试执行前进行,@After在执行后进行

MyBatis运行的流程图如下所示 :

sqlSession对象本质上是堆里开辟的一块内存空间。sqlSessin对象创建后会通过executor执行,并在本地生成本地缓存,这样,在第二次调用该sql语句时,即可直接调用缓存

我们写一个简单的例子进行测试 

执行结果我们可以看到,只执行了一次sql语句(第二次调用本地缓存)

并且二者指向的的地址都为同一个

二、一级缓存

一级缓存: sqlSession级别的缓存

(1)一级缓存失效的四种情况
1.查询时所使用的sqlSession不同

定义两个session,factor可以生成多个session对象。吧

此时的结果为

2.sqlSession相同但是当前查询条件不同
3.sqlSesssion相同,但两次查询之间进行了增删改的操作

如果进行了增删改的操作,数据库的内容发生更改,本地缓存也一定会变化,否则就会查找到错误的信息。换句话说,也就是为了保证缓存一致性

4.手动清除了一切缓存
session1.clearCache();
//手动清除一级缓存

三、二级缓存

二级缓存:sqlSession Factory,二级缓存默认情况下是关闭的

(1)开启二级缓存的四个条件

①:在核心配置文件中,设置全局属性caheEnable="true"。

②:在映射件中置<Cache>

注意!哪个映射文件中写上了cache,哪个文件才会开启二级缓存

③:查询数据所转换的实体类类型必须实现序列化接口

④:二级缓存必须在SqlSession关闭或提交之后有效,即必须让一级缓存失效才可以使用二级缓存

这里还是两个session的情况

结果如下

注意!一级缓存中缓存的是对象,二级缓存缓存的是数据,不是对象。 

(2)Cache参数

LRU(最近最少使用的):移除最长时间不被使用的对象,这是默认值。

FIFO(先进先出):按对象进入缓存的顺序来移除它们。

SOFT(软引用):移除基于垃圾回收器状态和软引用规则的对象。

WEAK(弱引用):更积极地移除基于垃圾收集器状态和弱引用规则的对象。

flushinterval(刷新间隔):可以被设置为任意的正整数,而且它们代表一个合理的毫秒形式的时间段。(默认情况不设置,即没有刷新间隔,缓存仅仅在调用语句时刷新。)

size(引用数目):可以被设置为任意正整数,要记住缓存的对象数目和运行环境的可用内存资源数目。默认值是1024 。

readOnly(只读):属性可以被设置为 true / false。

  • true:只读缓存:会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改, 这提供了很重要的性能优势。
  • false读写缓存: 通过序列化返回缓存对象的拷贝,这种方式会慢一些,但是安全,因此默认是 false。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com