為什么外國(guó)的程序員不愿意使用 MyBatis?
老外用MyBatis嗎
昨天我在我在知乎看到了一張比較Hibernate和MyBatis使用情況的圖,順手發(fā)了條朋友圈:
????
Hibernate vs MyBatis ,誰能告訴我什么樣的國(guó)情導(dǎo)致了這么大的差異?
結(jié)果有人質(zhì)疑,有人感嘆。
我開始沒有想到會(huì)有人質(zhì)疑這個(gè)結(jié)果,在我的直覺里,確實(shí)國(guó)外使用MyBatis的人很少(在國(guó)外的網(wǎng)站上很少看到MyBatis的文章,但JPA/Hibernate的文章經(jīng)??吹剑?。所以今天早上我用google的trends驗(yàn)證了一下,上面的以及下面的這些比較圖,都可以訪問 https://trends.google.com/trends/explore?q=%2Fm%2F04t80p,MyBatis 來看到。
從下面這個(gè)對(duì)比來看,MyBatis的關(guān)注主要集中在中日韓。
從全球的的比例來看,是這樣的:
上面是基于google查詢的數(shù)據(jù)計(jì)算出來的,如果基于youtube,那結(jié)果是這樣的:
從以上的結(jié)果來看,在國(guó)外,準(zhǔn)確地說,在中日韓之外的大部分地區(qū),JPA/Hibernate完勝M(fèi)yBatis,但在國(guó)內(nèi)卻完全相反,But Why?
老外為什么不用MyBatis?
為什么會(huì)這樣呢?我也不知道。一些朋友發(fā)表了自己的想法:
回復(fù)基本上分兩種:
- 青年程序員都在質(zhì)疑這個(gè)圖的可信度
- 中老年程序員都在感嘆國(guó)外其實(shí)更注重開發(fā)效率和面向?qū)ο蟮姆治龊驮O(shè)計(jì)
有個(gè)朋友說的非常好:
竊以為,唯獨(dú)神州大量使用Mybatis,主要看重它不強(qiáng)化業(yè)務(wù)建模地搞表。
造成的后果是,寧可自己寫SQL也不意義花力氣使用OOAD思維方式梳理業(yè)務(wù)并建模。
而hibernate是OOAD建模后的自然延伸
好吧,下面是我個(gè)人的觀點(diǎn):
- 確實(shí),和對(duì)OOAD的重視有關(guān),我在做DDD戰(zhàn)術(shù)落地的時(shí)候,用MyBatis非常蹩腳,用JPA/Hibernate會(huì)好很多。
- JPA/Hibernate比較復(fù)雜,團(tuán)隊(duì)中要有人Hold住它,否則及其容易踩坑;另外,真要使用,建議使用它的一個(gè)功能子集,不要所有功能都用。也可以嘗試使用更簡(jiǎn)單EBean ORM。
- JPA/Hibernate對(duì)分庫(kù)分表的支持有一下坑。雖然,使用Shareding-JDBC或MyCat等技術(shù),可以不關(guān)心分庫(kù)分表,但是,JPA/Hibernate在某些情況下(比如加載子集合的時(shí)候)可能會(huì)不帶分區(qū)鍵。國(guó)外分庫(kù)分表的少,國(guó)內(nèi)幾乎是標(biāo)配。
- 國(guó)內(nèi)做互聯(lián)網(wǎng)的Java程序很多都是拷貝阿里的,阿里一開始用例iBatis(日本韓國(guó)是怎么回事呢)。大量的老系統(tǒng)都是基于iBatis/MyBatis的,市場(chǎng)上對(duì)MyBatis熟悉的人才更多,招聘和培訓(xùn)更容易,有的青年程序員以為“MyBatis早已統(tǒng)一全球了”就是一個(gè)很好的證明。
還有別的原因嗎?大家可以補(bǔ)充。