{eval=Array;=+count(Array);}
主要是hibernate提倡以面向對象的方式操作數據庫,SQL都是自動生成的,有些復雜的查詢orm生成的SQL不會命中索引,導致查詢性能不高。一切起源于杰克馬提出的去ioe運動,根本原因是沒錢就瘋狂壓榨程序員。
1.國內基本都學過SQL,而且寫SQL很方便。
2.國內大多數是“面向數據庫編程”
3.JPA的表連接太難懂,國內對于ORM的思想還是停留在JDBC
4.Mybatis更易于維護,面對不穩定的國內環境更適合
1.hibernate對sql做了一層封裝轉換變成了hql,sql對程序員來說是最直觀的,hql又包了一層,感覺別扭。
2.都要生成一通xml,hibernate沒優勢啊,mybatis一些插件單表不用xml了,維護方便啊。
3.國內項目業務復雜,mybatis更具有靈活性。插件豐富tk.mybatis、mybatis-plus大大降低了開發成本。
4.MyBatis可以進行更為細致的SQL優化,可以減少查詢字段。
5.MyBatis容易掌握,而Hibernate門檻較高。
6.緩存問題(這一點我說得不一定對),話說hibernate比mybatis更好使用,需要注意得地方少。但是,但是,但是啊我覺得這只是對單機項目吧,目前多節點項目都用redis作為緩存啊,這就使的架構師選擇mybatis時更加沒什么猶豫了。
7.國內開源項目基本都是集成得mybatis,氛圍就是這樣。用hibernate的都是一些老項目,公司內部的不開源的,基本的架構設計和目前的潮流格格不入了。國內的培訓機構基本都時ssm流。
8.MyBatis相對于hibernate的缺點漸漸被彌補是關鍵,MyBatis的代碼生成器拓展起來真的很方便。
9.MyBatis的批量保存使用要注意
國內有段時間也流行過hibernate,但大多到后期,覺的不好優化。還是覺的mybatis可控,符合國情唄,但為了對付mybatis這個半成品,業界也推出了不少增強框架:mybatis plus, tk mybatis, mybatis enhance。 這些產品有不少優點,但也都沒有辦法徹底解決問題。
最近有個新興起的增強框架, fluent mybatis,吸收很多框架的優點,既有jpa的方便,又保持了可以自己編寫sql的原始掌控能力。
同時有很多增強的特性:分頁處理,租房處理,嵌套查詢,聯表查詢,多數據庫兼容處理,fluent語法。
https://gitee.com/fluent-mybatis/fluent-mybatis
https://mp.weixin.qq.com/s/jlcWt_1zbksDgncVr64nqA
國內人多,用戶量大,必須要mybatis來優化sql。國外大部分網站人不多,hibernate更效率,國外的大型網站依然是mybatis,不過嘛大型畢竟只有那幾家,所以國外hibernate是主流。
因為中國人多,數據量大,業務變化快,設計人員水平問題,時間緊,這些層層疊加起來就讓頭部程序員選擇更靈活的mybatis,然后他們寫出各種文檔,后輩們自然跟風,難道我放著中文不看去看英文資料?
1:持久層只是個工具,不要太在意。
2:中西方思考方式還是有比較大的差已的,不要以自己當前的環境考慮別人的選擇
3:如果是數據庫編程為主的團隊,mybatis還是不錯的,畢竟這種團隊選擇它,不是自己決定的,而是市場環境之必然
0
回答0
回答3
回答0
回答0
回答1
回答0
回答10
回答0
回答0
回答