Mybatis 与 Hibernate 有哪些不同?

1. hibernate 是全自动,而 mybatis 是半自动。
hibernate 完全可以通过对象关系模型实现对数据库的操作,拥有完整的 JavaBean 对象与数据库的映射结构来自动生成 sql。而 mybatis 仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写 sql 来实现和管理。

2. hibernate 数据库移植性远大于 mybatis。

hibernate 通过它强大的映射结构和 hql 语言,大大降低了对象与数据库(oracle、mysql 等)的耦合性,而 mybatis 由于需要手写 sql,因此与数据库的耦合性直接取决于程序员写 sql 的方法,如果 sql 不具通用性而用了很多某数据库特性的 sql 语句的话,移植性也会随之降低很多,成本很高。

3. hibernate 拥有完整的日志系统,mybatis 则欠缺一些。

hibernate 日志系统非常健全,涉及广泛,包括:sql 记录、关系异常、优化警告、缓存提示、脏数据警告等;而 mybatis 则除了基本记录功能外,功能薄弱很多。

4. mybatis 相比 hibernate 需要关心很多细节

hibernate 配置要比 mybatis 复杂的多,学习成本也比 mybatis 高。但也正因为 mybatis 使用简单,才导致它要比 hibernate 关心很多技术细节。mybatis 由于不用考虑很多细节,开发模式上与传统 jdbc 区别很小,因此很容易上手并开发项目,但忽略细节会导致项目前期 bug 较多,因而开发出相对稳定的软件很慢,而开发出软件却很快。hibernate 则正好与之相反。但是如果使用 hibernate 很熟练的话,实际上开发效率丝毫不差于甚至超越 mybatis。

5. sql 直接优化上,mybatis 要比 hibernate 方便很多

由于 mybatis 的 sql 都是写在 xml 里,因此优化 sql 比 hibernate 方便很多。而 hibernate 的 sql 很多都是自动生成的,无法直接维护 sql;虽有 hql,但功能还是不及 sql 强大,见到报表等变态需求时,hql 也歇菜,也就是说 hql 是有局限的;hibernate 虽然也支持原生 sql,但开发模式上却与 orm 不同,需要转换思维,因此使用上不是非常方便。总之写 sql 的灵活度上 hibernate 不及 mybatis。

总结:

Mybatis 是半 orm 框架,主要侧重于 SQL 编写。对数据库依赖比较强,不便于移植。
Hibernate 是全自动化 orm 框架,只需要关注对象,性能方面比较差些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值