mybatis与hibernate区别

4人阅读 评论(0) 收藏 举报

以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与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:小巧、方便、高效、简单、直接、半自动

hibernate:强大、方便、高效、复杂、绕弯子、全自动

参考:https://blog.csdn.net/wangpeng047/article/details/17038659

查看评论

Mybatis与Hibernate区别

hibernate:是一个标准的ORM框架(对象关系映射)。入门门槛较高,不需要写sql,sql语句自动生成,对sql语句进行优化、修改比较困难。 应用场景:适用需求变化不多的中小型项目,比如:后台...
  • u013252223
  • u013252223
  • 2017-04-10 14:46:34
  • 6893

Mybatis和Hibernate的区别

链接:http://www.cnblogs.com/inspurhaitian/p/4647485.html 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybati...
  • abcd1101
  • abcd1101
  • 2017-03-04 22:14:15
  • 1591

深入浅析Mybatis与Hibernate的区别与用途

1. hibernate是全自动,而mybatis是半自动 hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而my...
  • W_Q_Q_
  • W_Q_Q_
  • 2018-01-11 11:20:29
  • 4732

MyBatis与Hibernate区别

1、概述hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封装。mybatis主要着力点在于java对象与SQL之间的映射关系。2、Hiberna...
  • eff666
  • eff666
  • 2017-05-07 16:03:27
  • 2208

MyBatis、JDBC、Hibernate区别

从层次上看,JDBC是较底层的持久层操作方式,而Hibernate和MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作。从功能上看,JDBC就是简单的建立数据库连接,然后创...
  • lingongheng
  • lingongheng
  • 2016-09-26 20:37:25
  • 4845

mybatis与hibernate的区别——简述

1.mybatis是一个不完全的orm框架,因为mybatis需要程序员自己写大量的sql,需要程序员对sql的掌握比较高,不过mybatis可以通过xml文件可以灵活的配置要运行的sql语句,将sq...
  • qq_31808577
  • qq_31808577
  • 2017-03-25 17:32:56
  • 12840

hibernate和mybatis的区别

第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理...
  • a122191865
  • a122191865
  • 2016-04-13 09:39:15
  • 2089

HIbernate和Mybatis的区别和优劣势

第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优...
  • qwer_bbb
  • qwer_bbb
  • 2017-06-21 11:24:51
  • 1353

ibatis与mybatis区别,hibernate、mybatis、JDBC区别

ibatis与mybatis区别? ibatis是mybatis的前身,在2010年7\8月份ibatis所项目移到了google,就将ibatis3.x正式改名为mybatis3.x了。 ...
  • qq_21033663
  • qq_21033663
  • 2015-12-13 10:06:24
  • 8745

mybatis与hibernate的对比

本文并非原创,旨在整理汇总,不定期进行增加和修改。相同点:(1)Hibernate与MyBatis都是通过SessionFactoryBuider由XML配置文件生成SessionFactory,由S...
  • w_rcss
  • w_rcss
  • 2017-12-04 13:15:01
  • 11439
    个人资料
    等级:
    访问量: 2768
    积分: 250
    排名: 21万+
    最新评论