aspnet通讯录网站开发,wordpress可以移动端,zhi做网站,com域名表示的是什么机构本文不会下关于 Mybatis 和 JPA 两个持久层框架哪个更好这样的结论。只是摆事实#xff0c;讲道理#xff0c;所以#xff0c;请各位看官勿喷。
一、事件起因
关于 Mybatis 和 JPA 孰优孰劣的问题#xff0c;争论已经很多年了。一直也没有结论#xff0c;毕竟每个人的喜…本文不会下关于 Mybatis 和 JPA 两个持久层框架哪个更好这样的结论。只是摆事实讲道理所以请各位看官勿喷。
一、事件起因
关于 Mybatis 和 JPA 孰优孰劣的问题争论已经很多年了。一直也没有结论毕竟每个人的喜好和习惯是大不相同的。
我也看过知乎上一些问答各有各的理由感觉都挺有道理。如果让我不带感情色彩地去分辨其实我也是懵的因为真的是公说公有理婆说婆有理。
而在国内不得不承认用 Mybatis 的公司确实是要比用 JPA 的多但是在 2015 年以前用 Hibernate 的公司确实也是很多的。
为什么在国内会有这样的现象发生
二、目前生态 在最近2018的 JVM 生态报告中可以看出Mybatis 的占比只有可怜的 6%大家看到这个统计结果应该会很吃惊你会觉得不对啊我公司以及我很多朋友都在用 Mybatis 啊好像没听说过有人用 JPA 的这个统计结果是错的吧 再从下面这个对比来看MyBatis 的关注主要集中在中日韩。 首先必须指出对于青年程序员其实都会质疑这个图的可信度。
中老年程序员都在感叹国外其实更注重开发效率和面向对象的分析和设计。但我可以非常负责任地告诉你这图是真的。那么造成这种现象的原因是
三、国人喜欢 Mybatis 的原因
总结起来有如下原因
1.大厂带节奏
国内做互联网的 Java 程序很多都是拷贝阿里的阿里一开始用例 iBatis大量的老系统都是基于 iBatis/MyBatis 的市场上对 MyBatis 熟悉的人才更多招聘和培训更容易有的青年程序员以为“MyBatis 早已统一全球了”就是一个很好的证明。
2.简单学习成本低
小公司需要大量入门级的程序员像大神甚至一个都请不起请问大神们那些牛 b 框架哪个更快让菜鸟们上手降低公司学习成本。注意这个成本会一直跟随公司想必大神们创业直接前后端分离了毕竟钱嘛多的是。
3.对于复杂性需求的灵活性高
国内绝大部分项目都是面向表结构编程的把 java 对象仅当成数据容器查询和模型变更都设计在一张表上所谓业务逻辑就是一堆增删改查的 sql 集合当然用 mybatis 方便。
在逻辑不复杂或者你判断软件生命周期不会超过一年的时候直接用表结构编程是最方便快捷的。
国内普遍都是分布式流量和性能决定了需要经常进行优化而是用 Mybatis 对复杂需求的优化很方便。
4.公司环境
国内好多项目都是应付领导的某些奇葩需求。需要面向领导编程。一大半时间其实都是在解决领导的需求。
国内项目需要大量报表统计需要提供给领导作为决策。看到这里各位领导不要骂我 真的不是黑领导的。
5.Hibernate学习成本高
虽然实际上 SpringDataJPA 是非常简单的但是但是JPA/Hibernate 后期调试跟踪问题很麻烦改起来也麻烦。别忘了牛逼如你的人全公司甚至一个都没。
还有什么缓存什么 Criteria 什么 Lazy虽然这些你学了也不见得能用上但一个框架你不学还是不行的。
而且JPA 对于增删改很方便复杂查询却是软肋有同学会说JPA 也能写 SQL 语句啊我想说的是既然都用 orm 了你再写 sql那不就失去了 oop 的内涵了吗不优雅好吧。mybaits 项目案例大全www.1b23.com 。
四、老外喜欢 JPA 的原因
1.很多老外对 Mybatis 的认知还停留在 iBatis 阶段
实际上在 Mybatis 的应用场景里面开发者要的就是自动封装把 sql 查询结果转化为指定的 java 对象。
这个在 iBatis 阶段需要开发者自己定义大量的 xml 配置去指定数据库表字段与 Java 实体类之间的关系。并且对于每一条 sql都需要在 xml 中写相应的语句虽然有代码生成器带开发量还是不小的。
但 Mybatis 发展到今天已经非常完美地做好了自动封装数据对象这件事支持的插件也比较丰富。对于常见的增删改查也不需要自己写一行代码这已经无限接近于 Hibernate 的能力了。
2.喜欢 OOP、DDD
认为写 SQL 不优雅用 jpa 的核心是让我们关注对象建模而不是关心底层数据库映射。只有你在考虑数据和行为在一起的充血模型、贴身职责聚合根状态变迁值对象不变性的情况下你才会发现 jpa 给你提供了很多便利根本不需要关注底层存储模型。
在复杂的逻辑、超长的软件生命周期。使用 DDD 的设计方法是目前看比较合理的选择维护的成本比较低。
DDD 全称是Domain-Driven Design)这是 2004 年就出来的理论复杂逻辑的应对之道。DDD 大会在欧洲等地办了一届又一届CQRS、Event Sourcing 等探索层出不穷这也是为什么国外比较流行 JPA 原因。
不过国内主要是随着这两年随着微服务火爆也有人谈起来 DDD 了。但其实 DDD 也不是银弹需要大拿能把控全局国内缺的就是这种大拿搬砖的太多。
3.有些老外在技术选型时不会考虑除 Spring 这种知名框架外的其他技术无他唯手熟尔。
Spring确实很强国外一个项目做了几年十几年都是很正常的。我以前接触过一个国外的的电商项目做了十几年也跑的好好的这就是证据。
使用技术也是有惯性的。
4.数据体量和种类没有达到
个人感觉也咨询了国际友人。老外的项目在数据体量和种类上完全达不到国内的水平。
所以他们对于性能上的渴求度没有那么高。追求的是稳定可维护性好。国内一个双 11如果用 hibernate那只能死掉了。
也说明老外的需求主要是在业务上技术层面较少考虑。 --------------------- 作者FH-Admin 来源CSDN 原文https://blog.csdn.net/u010253246/article/details/105731204/ 版权声明本文为作者原创文章转载请附上博文链接 内容解析ByCSDN,CNBLOG博客文章一键转载插件