当前位置: 首页 > news >正文

MyBatis面试

一、对ORM框架的理解

Mybatis【半ORM,因为需要自己写SQL】、Hibernate【全ORM-HQL,确实灵活度】。JPA相当于Hibernate、MyBatisPlus和Mybatis差不多。
ORM(Object Relational Mapping,对象关系映射)框架用来做实体类和数据库数据之间做映射,通过操作实体类就可以间接操作数据库。
Mybatis框架并不能提高数据操作效率问题!!!

二、JDBC、JdbcTemplate和Mybatis的区别

JDBC用于在程序中访问数据库的API。它需要开发人员手动编写SQL和处理数据库连接等操作,以提高数据库性能。
JdbcTemplate:是Spring框架提供的一个简化JDBC操作的模板类,通过简化了的API,使得对数据库的操作更加便捷,从而减少了开发人员的工作量。
Mybatis:是一个持久层框架,通过xml配置或注解方式进行SQL映射,提供更加灵活的方式来操作数据库,同时支持动态SQL和缓存等功能。

三、如何提高数据库操作效率?

(一)数据库索引优化

(二)查询优化

(三)数据库表结构优化

(四)缓存机制

(五)批量操作

(六)数据库连接池

四、Mybatis中的缓存机制

用户提交数据->先从缓存中获取数据->命中缓存则直接返回,否则查询数据库同时存入缓存并返回结果。从缓存中获取数据时先从二级缓存中获取如果没有再从一级缓存中获取数据。
一级缓存是SqlSession级别(线程级别)的,默认开启。二级缓存是SqlSessionFactory级别(进程级别)的,默认关闭。二级缓存需要在settings配置文件开启并在mapper映射文件中添加 标签来开启二级缓存。
Mybatis中的缓存机制主要是在进行SQL查询时进行以提高查询性能,缓存机制是基于对象的缓存,缓存的是查询结果对象而不是查询到的结果集。缓存的对象会根据查询语句和参数生成一个缓存键,以便后续在缓存中进行查找和缓存结果。当执行更新操作时,会清空相关的缓存,以保证缓存数据的一致性。

五、Mybatis中如何避免缓存击穿和缓存雪崩

(一)什么是缓存击穿和缓存雪崩?

1.缓存击穿

热点数据的某个key在某一瞬间失效,导致大量请求直接打到数据库,造成数据库压力瞬间增大。

2.缓存雪崩

大量key在同一时间失效,导致大量请求直接打到数据库的现象。

(二)怎么解决缓存击穿和缓存雪崩?

1.缓存击穿

(1)使用分布式锁

在查询热点数据时,使用分布式锁确保在同一时间只有一个线程能够访问数据库并更新缓存,避免缓存击穿问题。

(2)设置永不过期

对于一些热点数据,可以设置成永不过期,从而避免缓存击穿和缓存雪崩问题。

(3)缓存预热

在系统启动时,提前将一些热点数据加载进缓存中,避免在高并发时发生缓存击穿和缓存雪崩问题。

2.缓存雪崩

(1)设置合理的缓存时间

给key的失效时间增加一个合适的随机值,避免发生缓存雪崩。

(2)设置永不过期

对于一些热点数据,可以设置成永不过期,从而避免缓存击穿和缓存雪崩问题。

(3)缓存预热

在系统启动时,提前将一些热点数据加载进缓存中,避免在高并发时发生缓存击穿和缓存雪崩问题。

六、查询操作的步骤

(一)Mybatis的实现

请求进来时,先通过SqlSessionFactory对象维护一个SqlSession对象(工厂模式)来处理请求,具体来说是SqlSession对象把请求交给执行器来处理,执行器在处理查询请求时是先从二级缓存中查询数据如果没有则从一级缓存中查询数据,如果命中缓存则直接返回,否则需要查询数据库,并将查询结果加进缓存后返回结果。

(二)Spring中的实现

通过给Mapper接口创建代理对象来实现。


http://www.mrgr.cn/news/22896.html

相关文章:

  • 圣杯布局、双飞翼布局以及Flex
  • 每个分布式营销团队都应该使用的5种分析工具
  • 如何优雅地处理 RabbitMQ 连接中断问题
  • 一文揭秘:从零开发一套中小型医院的云HIS系统,需要多少开发成本?
  • 五种IO模型
  • Java实现简易计算器功能(idea)
  • MapBox Android版开发 4 国际化功能v11
  • UnLua调用蓝图变量、动画、函数
  • 讨论:无法访问不同网段的Kafka问题
  • Simulink库模块作用及简单应用(一)
  • HarmonyOS学习(九)——窗口管理
  • 最小堆最大堆
  • 如何下载安装AutoCAD 2025
  • 10款国民级企业文件加密系统介绍,究竟哪一个是你的菜?
  • 跨国公司在华研发战略调整对中国IT产业的影响与应对
  • 华为ADS3.0智驾全揭秘,问界M9可以封王了
  • 电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此
  • HTML5中的数据存储sessionStorage、localStorage
  • 【算法思想·二叉树】后续篇
  • 【 html+css 绚丽Loading 】 000045 太极旋流轮