{eval=Array;=+count(Array);}
如果讓我來說,我推薦你使用sqltoy-orm,增刪改和對象加載簡單查詢jpa模式,查詢則比mybatis強無數(shù)倍,更加直觀簡潔,另外具有緩存翻譯大幅提升查詢性能,還有很多人不敢想象的分頁優(yōu)化級別(很多僅僅優(yōu)化了count處理就以為很強了,見了sqltoy的分頁優(yōu)化才屬于見到了不可想象的事情)!
github上搜索sagacity-sqltoy!
https://github.com/sagframe/sagacity-sqltoy
gitee地址:
https://gitee.com/sagacity/sagacity-sqltoy
我自己開發(fā)的情況下用JPA的比例比mybaits更多,首先我比較討厭mybaits那種標簽和SQL混用的風格,其次是JPA的也是可以使用原生SQL嵌入實習復雜查詢的,最后是JPA穩(wěn)定性比較好
看你團隊喜好吧,Mybatis 容易上手,也更加靈活。
JPA 也不錯,畢竟屬于 Spring 全家桶一部分,像使用對象一樣寫 SQL 這種體驗也蠻好的。
都可以執(zhí)行原生 SQL。
怎么喜歡怎么來。
不必糾結(jié)。
都可以吧,mybatis我更多用來寫報表統(tǒng)計,或者復雜的關(guān)聯(lián)查詢。如果架構(gòu)是微服務,并且通過業(yè)務解耦來避免了頻繁的事務,用spring data是非常好的選擇[呲牙]最后,為什么非要二選一呢?看看mybatis plus吧,成功的糅合了mybatis的靈活與jpa的快捷,還有代碼生成器,非常建議題主去試試!
技術(shù)選型需要結(jié)合多方面來考慮,這里我試著列舉一些方面,僅供參考。
是否需要兼容多種數(shù)據(jù)庫。如果需要兼容,優(yōu)先考慮spring data jpa。因為mybatis想要兼容數(shù)據(jù)庫需要寫多套sql腳本,工作量很大。
開發(fā)團隊的經(jīng)驗。開發(fā)團隊成員過往開發(fā)中,對哪個orm框架更熟悉。一般來說,mybatis上手比較容易,jpa/hibernate雖然不用寫sql語句,但是配置復雜,各個狀態(tài)轉(zhuǎn)換難以理解,出現(xiàn)錯誤也難以調(diào)試,對開發(fā)人員能力要求較高。
性能考慮。作為orm框架,jpa/hibernate需要把數(shù)據(jù)庫行完全映射成java對象,占用內(nèi)存較大,特別是進行關(guān)鍵查詢的情況下。當然,這可以通過懶加載、查詢指定字段等方式優(yōu)化,但是和上面一樣,對人員要求較高。另外hibernate生成的sql語句可讀性也較差,不利于檢查問題。
其他雜項考慮。jpa對邏輯刪除支持較差; mybatis編寫ResultMap過于繁瑣等等。
總結(jié)一下,spring data jpa開發(fā)效率高,代碼量少,但是代價是學習成本和優(yōu)化成本比較高。mybatis代碼量大一些,不好兼容多種數(shù)據(jù)庫,但是手動編寫sql相對靈活,上手簡單。
如果做的是管理類型的系統(tǒng)特別是動態(tài)查詢復雜的, mybatis 比較好些,其他推薦用Spring data jpa
0
回答0
回答0
回答1
回答0
回答5
回答10
回答0
回答0
回答8
回答