国内程序员的十大疑问之一:为什么老外不愿意用MyBatis?
老外用MyBatis吗
昨天我在我在知乎看到了一张比较Hibernate和MyBatis使用情况的图,顺手发了条朋友圈:
Hibernate vs MyBatis ,谁能告诉我什么样的国情导致了这么大的差异?
结果有人质疑,有人感叹。
我开始没有想到会有人质疑这个结果,在我的直觉里,确实国外使用MyBatis的人很少(在国外的网站上很少看到MyBatis的文章,但JPA/Hibernate的文章经常看到)。所以今天早上我用google的trends验证了一下,上面的以及下面的这些比较图,都可以访问 https://trends.google.com/trends/explore?q=%2Fm%2F04t80p,MyBatis 来看到。
从下面这个对比来看,MyBatis的关注主要集中在中日韩。
从全球的的比例来看,是这样的:
上面是基于google查询的数据计算出来的,如果基于youtube,那结果是这样的:
从以上的结果来看,在国外,准确地说,在中日韩之外的大部分地区,JPA/Hibernate完胜MyBatis,但在国内却完全相反,But Why?
老外为什么不用MyBatis?
为什么会这样呢?我也不知道。一些朋友发表了自己的想法:
回复基本上分两种:
青年程序员都在质疑这个图的可信度
中老年程序员都在感叹国外其实更注重开发效率和面向对象的分析和设计
有个朋友说的非常好:
窃以为,唯独神州大量使用Mybatis,主要看重它不强化业务建模地搞表。造成的后果是,宁可自己写SQL也不意义花力气使用OOAD思维方式梳理业务并建模。而hibernate是OOAD建模后的自然延伸
好吧,下面是我个人的观点:
确实,和对OOAD的重视有关,我在做DDD战术落地的时候,用MyBatis非常蹩脚,用JPA/Hibernate会好很多。
JPA/Hibernate比较复杂,团队中要有人Hold住它,否则及其容易踩坑;另外,真要使用,建议使用它的一个功能子集,不要所有功能都用。也可以尝试使用更简单EBean ORM。
JPA/Hibernate对分库分表的支持有一下坑。虽然,使用Shareding-JDBC或MyCat等技术,可以不关心分库分表,但是,JPA/Hibernate在某些情况下(比如加载子集合的时候)可能会不带分区键。国外分库分表的少,国内几乎是标配。
国内做互联网的Java程序很多都是拷贝阿里的,阿里一开始用例iBatis(日本韩国是怎么回事呢)。大量的老系统都是基于iBatis/MyBatis的,市场上对MyBatis熟悉的人才更多,招聘和培训更容易,有的青年程序员以为“MyBatis早已统一全球了”就是一个很好的证明。
原文地址:https://www.jianshu.com/p/654f387cd865
国内程序员的十大疑问之一:为什么老外不愿意用MyBatis?的更多相关文章
- java 书籍推荐 JavaEE程序员必读图书大推荐
java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给 ...
- 提高ASP.NET应用程序性能的十大方法
一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...
- JavaEE程序员必读图书大推荐
下面是我根据多年的阅读和实践经验,给您推荐的一些图书: 第一部分: Java语言篇 1 <Java编程规范> 星级: 适合对象:初级,中级 介绍:作者James Gosling(Java之 ...
- 提高Asp.Net应用程序性能的十大方法(译感)
译完了提高Asp.Net应用程序的十大方法这篇文章,仔细想其中提到的每一条,在这里结合我的项目来谈谈.第一条:返回多个结果集因为我的项目中所有对数据库的访问的sql语句都是通过调用存储过程实现的,所以 ...
- [转]成为优秀Java程序员的10大技巧
转自:http://www.codeceo.com/article/10-good-java-programmer-tips.html Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开 ...
- 盘点国内程序员不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?【转载】
综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? https://github.com/syedhali/EZ ...
- 【同行说技术】Python程序员小白变大神必读资料汇总( 三)
在文章<Python开发.调试.爬虫类工具大全>里面向大家总结了各种实用工具和爬虫技术,今天小编收集了5篇带有实例干货的资料,赶紧来看看吧!另外,喜欢写博客的博主可以申请加工程师博主交流群 ...
- 盘点国内程序员不常用的热门iOS第三方库
https://github.com/syedhali/EZAudio 基于核心音频,有助于进行实时,低延迟音频处理和可视化的iOS和OSX音频可视化框架. https://github.com/ba ...
- Java 程序员们值得一看的好书推荐
"学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一 ...
随机推荐
- overlaps the location of another project Zendstudio导入已经存在的目录
转 http://blog.csdn.net/kdchxue/article/details/50633745 最近弄zendstuido导入已经存在的项目,找了很多地方终于找到了导入的方法,特别记录 ...
- UML 用例图(转载)
UML是系统架构设计师考试的一个重要考点,需要考生掌握.但是有些考生,在学习的过程中会有这样的疑问,在敏捷开发时代,UML还有没有必要去学习? UML还是有用的,主要用在设计和分析阶段,但是UML不适 ...
- jmeter正则表达式提取器使用
引用名称:请求中的参数需要引用的名称 正则表达式:从结果集中提取数据,例如从数据库查询结果中提取数据 模板:$1$表示提取表达式中的第一个值,$n$以此类推 匹配数字:0代表随机,1代表第一个值,n代 ...
- Java核心技术梳理-异常处理
一.引言 异常总是不可避免的,就算我们自身的代码足够优秀,但却不能保证用户都按照我们想法进行输入,就算用户按照我们的想法进行输入,我们也不能保证操作系统稳定,另外还有网络环境等,不可控因素太多,异常也 ...
- H.264学习笔记1——相关概念
此处记录学习AVC过程中的一些基本概念,不定时更新. frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵. field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶 ...
- 迅为iTOP-4418开发板串口虚拟控制台配置为普通串口
如何将 iTOP-4418 的串口控制台配置为普通串口.在最终的产品中,如果需要额外的串口,可以将调试用的控制台串口作为普通串口使用,因为交付给最终用户手中的产品,一般不需要调试串口.屏蔽串口控制台需 ...
- webstorm 创建es6项目 babel 转 es5
node 安装 webstorm 安装 略过 npm install -y //生成package.json npm install babel-cli -g //全局安装babel-cli npm ...
- CAD嵌套打印(网页版)
当用户需要打印两个CAD控件的图纸时,可以采用嵌套打印实现.点击此处在线演示. 实现嵌套打印功能,首先将两个CAD控件放入网页中,js代码如下: <p align="center&qu ...
- 基于oauth2.0实现应用的第三方登录
OAuth2 OAuth2所涉及到的对象主要有以下四个: Client 第三方应用,我们的应用就是一个Client Resource Owner 资源所有者,即用户 Authorization Ser ...
- RabbitMQ之六种队列模式
先学习一下RabbitMQ中的六种队列,只学习前五种,具体的官方文档地址是:http://next.rabbitmq.com/getstarted.html 导入maven依赖: <depend ...