首先,Mybatis 和 Hibernate 都是 ORM 持久层框架,不同点在于,MyBatis 是半自动的,它需要开发人员自己手动编写 SQL 语句。

一、Mybatis

MyBatis 支持通过 XML 或注解的方式来配置需要运行的 SQL 语句,并且,最终由框架本身将 Java 对象和 SQL 语句映射生成最终执行的 SQL ,执行后,再将结果映射成 Java 对象返回。

相较于 Hibernate, Mybatis 因为可以编写原生的 SQL ,也就是说,能够严格控制 SQL 执行性能,灵活度高。但是灵活的前提是 MyBatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套 SQL 映射文件,工作量大。

PS: 现在一般借助于一些自动化的插件,来帮我们自动生成相关代码,极大地提升了开发效率。还可以使用 MyBatis-Plus 框架,内部集成了常用的 SQL 操作,也是非常不错的。

二、Hibernate

再来说说 Hibernate, 它对象/关系映射能力强,能做到数据库无关性。如果用 Hibernate 开发,无需关系 SQL 编写(不会写 SQL 的人都可以操作数据库),能节省很多代码,提高效率。但是 Hibernate 的缺点是学习门槛高,要精通门槛更高,而且怎么设计 O/R 映射,在性能和对象模型之间如何权衡,以及怎样用好 Hibernate 需要具有很强的经验和能力才行。

插一句: JPA 是基于 Hibernate 的一层封装,也就是说底层还是 Hibernate.

三、如何选型

结合公司业务,选取最适合的框架,不要为了技术而技术,否则都是耍流氓。

比如说,你所在的是相对来说较小的公司,数据量并不大,且公司开发人员的技术栈偏 Hibernate 多一些,推荐使用 JPA、Hibernate 这些无需手动编写 SQL 的持久层框架,提高开发效率、版本迭代速度。

如果说,你所在的是一家互联网公司,用户数较大,对相关 SQL 执行性能要求较为严格,则推荐使用 Mybatis。

总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。

四、总结

Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取。 Mybatis 属于半自动 ORM 映射工具,在查询关联对象或关联集合对象时,需要手动编写 SQL 来完成。

Java肖先生:专注于Java开发技术的研究与知识分享!

————END————

  • 点赞(编辑不易,感谢您的支持)
  • ...
  • 转发(分享知识,传播快乐)
  • ...
  • 关注(每天花十分钟,提升自己)
  • ...

推荐阅读

看到网上疯传的《阿里Java架构师成长之路》,网友瞬间沸腾了

Java程序员备战“金九银十”必备的面试技巧(附阿里Java岗面试题)

hibernate 根据用户名获取用户对象_Mybatis 和 Hibernate 持久层框架之间的区别是啥?...相关推荐

  1. mybatis plus关联查询_Mybatis 和 Hibernate 持久层框架之间的区别是啥?

    首先,Mybatis 和 Hibernate 都是 ORM 持久层框架,不同点在于,MyBatis 是半自动的,它需要开发人员自己手动编写 SQL 语句. 一.Mybatis MyBatis 支持通过 ...

  2. mysql高可用 持久层_MyBatis持久层框架使用总结 转载

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 2 ...

  3. 基于持久层框架hibernate用SpringMVC增删功能

    接Spring MVC框架(1)的方法 Hibernate:持久层全自动化的框架 hibernate 用的少了 因为现在mybatis用的多 接下来 hibernate框架要链接数据库blog /* ...

  4. JavaEE持久层框架对比与hibernate主键生成策略总结

    一.持久层框架对比 ORM框架:即对象关系映射.它把数据库表映射到pojo类,然后通过对类的操作来实现对数据库的增删改查,sql语句自动生成. 对于代码开发者来说,就是在代码里先创建数据库连接对象,然 ...

  5. Hibernate持久层框架详解

    本博文是本人原创,观点是本人自己提出的,如有雷同,不甚荣幸! 一.hibernate框架的前世今生 1.前世:2001年,Gavin King开始开发hibernate框架.两年之后,Gavin Ki ...

  6. 数据持久层框架 Hibernate

    Hibernate是一种Java语言下的对象关系映射解决方案. 它是使用GNU宽通用公共许可证发行的自由.开源的软件.它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架.Hib ...

  7. java如何获取手机号码_微信小程序+Java获取用户授权手机号码

    前言 小程序内可以直接通过授权获取用户微信号绑定的手机号码或用户添加的其他手机号码,这样可以使得小程序在进行账户的身份可控上又提高了一步,那么应该如何来获取手机号码呢?这篇文章就和大家一起来研究一下. ...

  8. Java_持久层_MyBatis

    不定期补充.修正.更新:欢迎大家讨论和指正 目录 JDBC MyBatis 基本使用 传参问题 全局配置文件 结果映射 多表查询 动态SQL if标签 choose标签 foreach标签 缓存 一级 ...

  9. c# 开源持久层 oracle,rexdb: 高性能的数据持久层(ORM)框架,查询性能是Hibernate的2.3倍,Mybatis的1.7倍。...

    org.rex-soft rexdb 1.0.4 使用Maven添加依赖后,不要忘记将rexdb配置文件rexdb.xml拷贝到classpath路径中 全部文档(限于篇幅,下面的正文仅包含简介和快速 ...

最新文章

  1. AD8606跟随器与倍乘电路模块
  2. C#写的NoSQL开源项目/系统(系列)
  3. 安装python模块时,遇到error: Unable to find vcvarsall.bat
  4. rabbitmq中消息的存储
  5. Linux系统/网络管理
  6. 网易云容器服务基于Kubernetes的实践探索
  7. php打png图片水印颜色失真,ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整...
  8. 【2015年第4期】面向科技情报的互联网信息源自动发现技术
  9. oracle数据库系统介绍,Oracle数据库(Oracle Database)体系结构及基本组成介绍
  10. 【李宏毅机器学习视频汇总】2016~2021李宏毅机器学习内容汇总及一些学习建议
  11. 最强整理!Android攒了一个月的面试题及解答,震撼来袭免费下载!
  12. 教你如何轻松玩转自媒体淘客,赚大钱!
  13. 所用软件安装及环境配置
  14. 计算机网络 华东理工大学 2020期末考试
  15. 厦门大学计算机科学与工程学院,厦门大学
  16. 电脑 及 电脑应用软件背景色、字体的设置(护眼色)
  17. 北京的春天——柳絮和沙尘在风中飞扬
  18. BZOJ 3036 绿豆蛙的归宿 期望DP
  19. Revit楼板:建筑楼板和结构楼板区别和垫层生成
  20. Linux 探索之旅 | 开宗明义 + 第一部分第一课:什么是 Linux?

热门文章

  1. HNU 19.迭代电路习题
  2. 第7讲 视觉里程计1
  3. 牛客寒假算法基础训练营5
  4. 加密Python脚本
  5. 【文献阅读】Stacked What-Where Auto-encoders -ICLR-2016
  6. 算法导论 思考题6-3(Young氏矩阵)
  7. 6-2 错误与异常处理
  8. 【IEEE Transactions NNLS】DSAN: Deep Subdomain Adaptation Network for Image Classification译读笔记
  9. MDK、keil复制中文注释乱码
  10. ROS学习笔记五:理解ROS topics