主题
面试速答(先看这里)
**一句话结论:**总的来说,MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。
60秒标准回答:
Hibernate和Mybatis都是ORM框架,都支持JDBC和JTA事务处理,它们创建的目的都是为了简化Java原生程序操作数据库的步骤。增加开发者的开发效率
不同点有以下几点
总的来说,MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**Hibernate和Mybatis都是ORM框架,都支持JDBC和JTA事务处理,它们创建的目的都是为了简化Java原生程序操作数据库的步骤。
- **要点2:**对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用 Hibernate,而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis。
**记忆锚点:**Hibernate → Mybatis → sql → MyBatis → Java → Sql
关键取舍:
- 对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用 Hibernate,而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis。
加分表达:
- 但是这也是优点, 通过Mybatis开发者就可以定制sql ,譬如多表join,sql优化等操作是Hibernate不具备的 Hibernate的缓存系统要优于Mybatis,如果二级缓存出现脏数据,Hibernate会及时报错,但是Mybatis就需要开发者自己去感知 总的来说,MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hi…
追问准备:
- 围绕「Hibernate」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Mybatis」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「sql」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
Hibernate和Mybatis都是ORM框架,都支持JDBC和JTA事务处理,它们创建的目的都是为了简化Java原生程序操作数据库的步骤。增加开发者的开发效率。
不同点有以下几点:
**Hibernate是全自动的,Mybatis是半自动的。**在Hibernate当中,开发者只需要定义好数据库的表字段和Java DO的映射关系和规则即可,Hibernate会开放出来接口自动去处理数据库表的CURD,并按照规定好的规则映射到DO对象中,这个过程中操作者是完全不需要感知Sql逻辑的。但是在Mybatis中则完全不是这样,Mybatis不会帮助开发者编写sql逻辑,Mybatis只会按照定义好的规则将数据库字段映射到Java的DO中,但是具体的sql逻辑还是需要开发者自己编写的。
正是因为Mybatis需要自己编写Sql逻辑,这是一个包袱,因为开发者需要根据不同的DB,选择不同的SQL语句(DB移植性不高),而且正是因为要自己写SQL,项目初期的开发工作量要比Hibernate大一点。但是这也是优点,通过Mybatis开发者就可以定制sql,譬如多表join,sql优化等操作是Hibernate不具备的
Hibernate的缓存系统要优于Mybatis,如果二级缓存出现脏数据,Hibernate会及时报错,但是Mybatis就需要开发者自己去感知
总的来说,MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。
对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用 Hibernate,而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis。