mybatis 一二级缓存区别
时间: 2023-08-13 13:03:30 浏览: 101
mybatis一二级缓存
MyBatis有一级缓存和二级缓存两种缓存机制,它们的区别如下:
1. 一级缓存:
- 一级缓存是默认开启的,它是基于线程的本地缓存。
- 一级缓存的作用范围是在同一个SqlSession内部,即同一个线程中的多次查询可以共享缓存数据。
- 当进行增删改操作时,会清空该SqlSession的一级缓存,保证数据的一致性。
- 如果多个SqlSession共享同一个数据源,那么它们之间的一级缓存是不共享的。
2. 二级缓存:
- 二级缓存是基于命名空间(Mapper)级别的缓存,可以跨SqlSession共享数据。
- 二级缓存需要手动配置开启,在Mapper映射文件中添加<cache>标签进行配置。
- 二级缓存的作用范围是在同一个命名空间中,即同一个Mapper中的多个SqlSession可以共享缓存数据。
- 在进行增删改操作时,会清空该命名空间的二级缓存。
- 默认情况下,二级缓存是使用一个内置的HashMap来存储数据,也可以通过配置使用其他的缓存实现,如Ehcache、Redis等。
需要注意的是,尽管MyBatis提供了缓存机制来提升查询性能,但在某些情况下,缓存可能会导致数据不一致的问题,特别是在并发环境下进行增删改操作时。因此,在使用缓存时需要注意缓存的合理配置和使用方式,以及在必要时手动清空缓存。
阅读全文