MyBatis面试题, 说说 MyBatis 的缓存机制?
MyBatis面试题, 说说 MyBatis 的缓存机制?
QA
Step 1
Q:: MyBatis 的缓存机制是什么?
A:: MyBatis 提供了一级缓存和二级缓存机制。一级缓存是 SqlSession 级别的缓存,默认开启且只在一个 SqlSession 中有效。二级缓存是 Mapper 映射文件级别的缓存,需要手动配置,并且可以跨 SqlSession 使用。
Step 2
Q:: 如何配置 MyBatis 的二级缓存?
A:: 在 MyBatis 配置文件中,通过添加 <cache/>
元素到 Mapper 映射文件中来开启二级缓存。还可以通过 cache 标签的各种属性(如 eviction、flushInterval、size、readOnly 等)来控制缓存的行为。
Step 3
Q:: MyBatis 的一级缓存的作用范围是什么?
A:: MyBatis 的一级缓存作用范围是 SqlSession,意味着在同一个 SqlSession 内,相同的查询结果会被缓存。该缓存不会跨 SqlSession 使用。
Step 4
Q:: MyBatis 缓存的失效情况有哪些?
A:: MyBatis 缓存会在以下情况下失效:1. 执行了 INSERT、UPDATE、DELETE 操作;2. SqlSession 关闭或清空;3. 映射文件中的 select 语句中使用了 flushCache=true 属性;4.
手动清空缓存。
Step 5
Q:: MyBatis 二级缓存的优点和缺点是什么?
A:: 优点:提高查询效率,减轻数据库压力。缺点:数据一致性问题,需要合理设置缓存失效策略,缓存占用内存空间。
Step 6
Q:: MyBatis 如何处理缓存和事务的关系?
A:: MyBatis 的一级缓存与事务绑定,当事务提交或回滚时,一级缓存会被清空。二级缓存则需要手动控制缓存的刷新和失效。
用途
面试中考察 MyBatis 缓存机制,是因为缓存机制在提高应用性能方面起着关键作用。缓存能够显著减少数据库访问次数,提升数据查询效率。但同时,缓存机制的配置和使用也较为复杂,需要开发者对其有深入理解,特别是在处理缓存与数据一致性问题时。在实际生产环境中,尤其是高并发、高数据访问频率的场景下,MyBatis 缓存机制能够极大地提升系统的响应速度和稳定性。\n相关问题
🦆
什么是 MyBatis?▷
🦆
MyBatis 与 Hibernate 有何区别?▷
🦆
MyBatis 如何实现分页查询?▷
🦆
MyBatis 中的动态 SQL 是什么?▷
🦆
MyBatis 的参数映射和结果映射是如何实现的?▷
🦆
如何在 MyBatis 中进行批量操作?▷