⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 zhihu.com/people/chenlong7890 「陈龙」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

本文选自知乎问答「为什么国内流行mybatis,国外反而多用hibernate?

Spring 团队的Josh Long自己在Twitter上做了一个调查。1625次投票,样本量不算大,但也能说明问题。和我答案最后的那些调查图表基本一致。

图片

我们看一下Google Trends的数据:

搜索条件是这样的:

图片

World Wide:

图片

United States:

图片

France:

图片

India:

图片

Canada:

图片

China:

图片

Japan:

图片

其他英文技术网站上的多个统计:

图片

图片

再看看Stack Overflow上的问题数:

(含有hibernate的标签和问题数)

(含有mybatis的标签和问题数)

三观成型没法改:zhihu.com/question/309662829/answer/579433240

这其实是一个很严重的错觉,首先,欧美的互联网企业程序员在激进程度上是不下于国内的,新技术、偏门技术的应用小范围的也不少。

其次,细分在java语言的系统集成和传统行业解决方案上,国外确实普遍在使用hibernate。

但我觉得这个选择本身是不掺杂技术优劣的,就好像因为马车的宽度,所以现在标准的宽轨铁路和马路汽车的宽度是xx一样,更多是因为惯性。

管理风格和思路的问题而已。

以我接触的某知名外企为例(top500),至今他们还有20年前的文档数据库在运行。

这种事情如果是在国内,早被干掉了,但是他们一直用到了现在。

我当时问他们的pm是什么原因才会使用这个系统,并且不升级。

人家说估计安全级别,这个系统是0级(最高级),但是使用频率和系统重要性都高于5,也就是一年用不了几回这种,安排开发预算整体升级几乎完全没有性价比,所以就pass了。

hibernate也是,可能hibernate确实已经不满足使用了,但是重构和升级的优先级不高,性价比不够,那么风控和预算上都不给过了,谁去改??

反过来讲,Facebook和tt还有谷歌这些,你听说过他们的什么java项目,或者更新分的hibernate项目么?

国内就是另一种风格了,我在几年前的回答里有过一次关于之前某个工作的吐槽,bd签了一个80万的合同,boss为了敏捷推进,中断产品线2个月紧急上线,前后投入研发成本300多万,最后以甲方的身份干了乙方的事,系统完全没有可复用性,这种傻缺事,在欧美公司能绕开风控和财务么。

这种拍脑门一句话绕开风控需求和财务的工作计划,在中日韩都是一脉相承的。(比如这次的拼多多,是他员工智商低么?这种体系上的缺陷一定是因为管理层人治大于制度啊。)

mybatis最大的一个特征就是,特别特别急的情况下可以拍脑门临时改,用一些所谓“临时解决方案”(懂的人都懂)。

hibernate如果没有总体设计的话,哪里有那么随便就能临时改动的(临时方案也可以用,但是没有那么方便)?

公司管理风格趋向于降低风险,和公司管理风格趋向于领导个人感受,导致了在管理、文化、制度上的全面差异,最终导致了技术选型的差异。

文章目录