Hibernate是当前主流的ORM框架,对数据库结构提供了较为完整的封装。

MyBatis同样也是非常流行的ORM框架,主要在于pojo与SQL之间的映射关系。

区别:

1、两者最大的区别

针对简单逻辑,Hibernate与MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。

针对高级查询,MyBatis需要手动编写SQL语句,以及ResultMap,而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于流程。

2、开发难度对比

Hibernate的开发难度大于MyBatis,主要由于Hibernate比较复杂,庞大,学习周期比较长。

MyBatis则相对简单,并且MyBatis主要依赖于生气了的书写,让开发者刚进更熟悉。

3、sql书写比较

MyBatis的sql是手动编写的,所以可以按照要求指定查询的字段,不过没有自己的日志统计,所以要借助Log4j来记录日志。

Hibernate也可以自己写sql来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性,不过Hibernate具有自己的日志统计。

4、数据库扩展性计较

MyBatis由于所有sql都是依赖数据库书写的,所以扩展性、迁移性比较差。

Hibernate与数据库具体的关联在XML中,所以HQL对具体是用什么数据库并不是很关心

5、缓存机制比较

相同点:Hibernate和MyBatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存成为其它第三方缓存方案,创建适配器来覆盖缓存行为。

不同点:Hibernate的二级缓存配置在SessionFactory生成配置文件中进行详细配置,然后再在具体的表对象映射中配置那种缓存。

MyBatis的二级缓存配置都是在每个具体的表对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓冲机制,并且MyBatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。

两者比较,因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL,所以在使用二级缓存时如果出现脏数据,系统会报出错误提示。

而MyBatis在这一方面使用二级缓存时需要特别小心,如果不能完全去顶数据更新操作的波及范围,避免cache的盲目使用,否则,脏数据的出现会给系统的正常运行带来很大的隐患。

6、总结

Hibernate与MyBatis都可以通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。

而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。

Hibernate的优势是Dao层开发比MyBatis简单,MyBatis需要维护sql和结果映射,数据库移植性,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL,有更好的二级缓存机制,可以使用第三方缓存,MyBatis本身提供的缓存机制不佳。

转载于:https://www.cnblogs.com/hedianwei/p/4570109.html

Hibernate与MyBatis区别相关推荐

  1. 【转】JPA、Hibernate和Mybatis区别和总结

    很多人都用过java的数据库连接池C3P0,但官方没有说明名称的由来. 据传闻:连接池作者是<星球大战>迷,C3P0就是其中的一个机器人,并且这个名称中包涵connection 和pool ...

  2. Hibernate ,Mybatis 区别,以及各自的一级,二级缓存理解

    区别: 1.Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的.MyBatis 在查询关联对象或 ...

  3. 框架:Hibernate和Mybatis的区别

    Mybatis和hibernate不同, Mybatis不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并 ...

  4. JPA、Hibernate、Mybatis的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.概念: Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装 ...

  5. hibernate 和 mybatis 的区别

    [转载]:JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结 转载于:https://www.cnblogs.com/virgosnail/p/10054987.html

  6. mybatis与mysql的优点_mybatis和hibernate比较_区别_优缺点

    前言 Hibernate与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8.而Mybatis相对平静,工具较少,当前最 ...

  7. Hibernate与MyBatis的区别

    一.简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQ ...

  8. 聊聊Hibernate和Mybatis的区别

    1.开发对比 开发速度 Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些. 个人觉得要用好Mybatis还是首先要先理解好Hibernate ...

  9. Hibernate和MyBatis的区别与联系

    1.Hibernate 在管理系统时代,首先是实现业务逻辑,然后才是性能,所以Hibernate在当时是主流. 2.MyBatis 在移动互联网时代,MyBatis是首选,不屏蔽SQL,程序员可以自己 ...

最新文章

  1. 未经任何测试的源代码开放
  2. C语言函数集(十五)
  3. Oracle-锁解读
  4. Django + Uwsgi + Nginx 的生产环境部署
  5. class转java_java动态代理实现与原理详细分析
  6. Metal之实现视频采集与实时渲染
  7. linux查看网络连接命令,系统运维|使用netstat检测及监测网络连接
  8. BZOJ 4754 [JSOI2016]独特的树叶 | 树哈希判同构
  9. 9.高性能MySQL --- 操作系统和硬件优化
  10. python是免费的、开源的、跨平台的_NovalIDE是一款开源,跨平台,而且免费的国产Python IDE。...
  11. 【WIN10】清除图标缓存
  12. 使用Kotlin创建动态Android TextWatcher
  13. Word 2019 更改默认模板的字体设置
  14. linux下libpng库的安装以及使用
  15. shell之BASH_SOURCE
  16. 2019奥鹏四月份考试英语计算机,中石油华东2019年秋季学期《大学英语4》在线考试补考(适用于2020年4月份考试)题目【标准答案】...
  17. 【场景实现】Vue+element如何让帖子评论带上emoji,这个需求让我在富文本Quill开始了踩坑连连看
  18. F12下载网页视频(开放网页)
  19. 串口通信校验方式(even,odd,space,mark)UART数据波形分析
  20. 5g多卡聚合路由器/5g多卡汇聚路由器,多网融合,弱网通信,多卡聚合路由器,5G多卡聚合路由,工业路由器,移动物联,商用路由, 视频直播, 融合通讯, 多链路聚合,5G多卡聚合,5G多链路聚合

热门文章

  1. jsonview浏览器插件 查看格式化json数据
  2. Linux笔记-Centos7将python2升级为python3(及修改yum配置防报错)
  3. Web前端笔记-two.js加载图片
  4. C++设计模式-中介者模式
  5. Spring Boot笔记-目前对Web后端开发的认识
  6. C++ opengl 纹理过滤之GL_REPEAT
  7. php调用视频功能,phpcms如何调用视频?
  8. openssl windows安装
  9. 怎样在计算机中创建d盘,我在电脑D盘内新建了一个文件夹,怎么才能给 – 手机爱问...
  10. base href= php,如何正确定义项目下的base href(页面中所有相对链接的基准URL)...