每到周末,张大胖都要去龙穴寺修身养性,顺便向编程大师请教一些问题。
这一次,他拿出了一幅图。
张大胖:大师,我发现一件神奇的事情,你看看这幅图。
大师:这是什么?
张大胖:这是Google Trends画出的趋势图。
大师:哦?全世界都在用Hibernate,只有中国程序员在用MyBatis。
张大胖:是啊,全世界都不用MyBatis,只有咱们在用,太孤独了!这是为什么呢?
大师:MyBatis,原来叫iBatis,这是淘宝二十年前使用的主力ORM框架。
大师顺手递给了张大胖一本书《淘宝技术这十年》。
张大胖:这又有什么关系?
大师:阿里在Java领域对国内程序员的影响力巨大啊,贡献了很多开源工具,,比如Dragonwell JDK、Dubbo、Druid、fastjson等等。还有《阿里巴巴Java开发手册》这样的开发规约。
张大胖:那又如何?
大师:阿里的选择可能会影响到Java社区啊,你想想,一个人从阿里公司,加入了你们公司,要做技术选型,你说他会选自己不熟悉的Hibernate还是玩得滚瓜烂熟的MyBatis?
张大胖:嗯,很可能是MyBatis。
大师:这就对了。
张大胖转念一想:不对啊,国内那么多公司,不会都受阿里的影响吧,他们总会根据自己的项目特点来选型吧?
大师:好,你提到了项目特点,你说说中国的项目特点是什么?
张大胖:短平快,CRUD比较多,面向数据库表进行编程,还有就是项目周期短,要得急,上午说需求,恨不得下午就上线,加班非常严重。
大师:那MyBatis的特点是什么?
张大胖:简单易学,上手快,非常灵活,可以自己写SQL,手工优化方便。
大师:你看,MyBatis是不是很适合国内的项目?面向表编程,方便实现事务脚本。
张大胖:事务脚本?
大师:我之前给你讲过,忘了?
大师又给张大胖递过一本书《企业应用架构模式》
张大胖:那国外为啥用Hibernate? 不用这么灵活的MyBatis?
大师:国外的开发环境比较好,流程规范更注重质量,有充足的时间设计和实现一个项目,并且长期去维护,如果业务逻辑复杂,使用领域模型比较好,例如DDD
张大胖:DDD我知道,领域驱动开发。
大师:既然领域模型都有了,用Hibernate根本不用关心底层存储模型,很自然就选它了。
张大胖:有点道理。
大师:再说了,国外才多少人啊,互联网用户也少,你开发一个应用,主要关注业务就行,不用那么费劲地去进行SQL调优,用Hibernate就可以了。
张大胖:可是国外很多互联网应用是面向全球的,用户数也很多啊。
大师:面向全球的应用只有巨头才能搞,国外大部分应用用户数很少的。
张大胖:所以,大师的意思是,国外都用Hibernate,中国用MyBatis,那是市场驱动的结果?
大师:对啊,不然呢?
张大胖掏出另外一幅图:
张大胖:大师您看,除了中国之外,MyBatis在日本,韩国,香港,台湾都是主流,东亚的程序员都很喜欢MyBatis,难道他们的项目特点和我们一样?也是短平快,996?这作何解释?
大师:这个....
张大胖:您的理论好像不太对啊......
大师:你走吧,为师要休息了!