1 二者简介
1.1 Hibernate 框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,建立对象与数据库表的映射。是一个全自动的、完全面向对象的持久层框架。
1.2 Mybatis框架
Mybatis是一个开源对象关系映射框架,原名:ibatis,2010年由谷歌接管以后更名。是一个半自动化的持久层框架。
2 两者区别
2.1 开发方面
在项目开发过程当中,就速度而言:
- hibernate开发中,sql语句已经被封装,直接可以使用,加快系统开发;
- Mybatis 属于半自动化,sql需要手工完成,稍微繁琐;
- 但是,凡事都不是绝对的,如果对于庞大复杂的系统项目来说,发杂语句较多,选择hibernate 就不是一个好方案。
2.2 sql优化方面
- Hibernate 自动生成sql,有些语句较为繁琐,会多消耗一些性能;
- Mybatis 手动编写sql,可以避免不需要的查询,提高系统性能;
2.3 对象管理比对
相同点:
Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓 存方案,创建适配器来完全覆盖缓存行为。
不同点:
-
Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。
-
MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
比较:
-
Hibernate 具有良好的管理机制,用户不需要关注SQL,如果二级缓存出现脏数据,系统会保存,;
-
Mybatis 在使用的时候要谨慎,避免缓存CAche 的使用。
-
Hibernate优势
-
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
-
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
-
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
-
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
-
-
Mybatis优势
-
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
-
MyBatis容易掌握,而Hibernate门槛较高。
-
一句话总结
-
Mybatis:小巧、方便、高效、简单、直接、半自动化
-
Hibernate:强大、方便、高效、复杂、间接、全自动化

本文对比了Hibernate和Mybatis两大持久层框架。Hibernate为全自动框架,简化了对象关系映射,但可能产生冗余SQL。Mybatis为半自动框架,提供更细粒度的SQL优化,但需手动编写SQL。在缓存、对象管理和数据库移植性上,两者各有优劣。
1908

被折叠的 条评论
为什么被折叠?



