關(guān)于Mybatis與JPA的優(yōu)缺點(diǎn)說(shuō)明
Mybatis與JPA的優(yōu)缺點(diǎn)
JPA java持久層API
可理解為一種規(guī)范,Hibernate就是其具體一個(gè)實(shí)現(xiàn)。它的實(shí)現(xiàn)應(yīng)用是Spring DataJpa,Spring提供了一套簡(jiǎn)化開(kāi)發(fā)框架,按照約定好的方法命名規(guī)則,編寫(xiě)dao層接口,即可在不編寫(xiě)實(shí)現(xiàn)情況下執(zhí)行數(shù)據(jù)庫(kù)操作,還提供了除CRUD以外的功能,比如分頁(yè)、排序、復(fù)雜查詢等。SpringDataJpa可以理解為對(duì)JPA的再次封裝,底層仍舊是Hibernate。
JPA優(yōu)勢(shì)
1、JPA可移植性好,支持Hibernate方言。
2、提供單表CRUD方法,減少sql語(yǔ)句的編寫(xiě),開(kāi)發(fā)效率高,。
3、面向?qū)ο箝_(kāi)發(fā)思想,對(duì)象化程度更高。
Mybatis優(yōu)點(diǎn)
1、自己編寫(xiě)SQL語(yǔ)句,更靈活、性能較高。
2、SQL語(yǔ)句與代碼相互分離,易于閱讀和維護(hù)。
3、提供XML標(biāo)簽#{}、${}、 <if test=""></if>等,支持拼寫(xiě)動(dòng)態(tài)SQL語(yǔ)句。
Mybatis缺點(diǎn)
1、單表的CRUD操作需要編寫(xiě)SQL語(yǔ)句,庫(kù)表字段的新增修改刪除,都要重新維護(hù)。
2、XML中有大量SQL需維護(hù);參數(shù)變更來(lái)回切換修改。
3、Mybatis功能有限。
JPA與Mybatis的區(qū)別
其實(shí)JPA和mybatis大體上沒(méi)什么區(qū)別,架構(gòu)上很相似,mybatis就是mapper層,JPA就是repository層,其他都一樣的

JPA就是把mapper層的接口換成repository的接口
那么接口具體長(zhǎng)什么樣呢?
mapper層
自己寫(xiě)sql語(yǔ)句

JPA的repository
沒(méi)有具體sql語(yǔ)句,看起來(lái)沒(méi)有實(shí)現(xiàn)一樣,但其實(shí)是遵循規(guī)則的實(shí)現(xiàn),你只要寫(xiě) findByXxx(Xxx xx) 就能根據(jù)某個(gè)鍵自動(dòng)實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢,當(dāng)然其他的語(yǔ)句也是可以實(shí)現(xiàn)的。

如果你覺(jué)得不靈活,也可以自己寫(xiě),例如

最后的nativeQuery一定加上,不然會(huì)報(bào)錯(cuò)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于@RestControllerAdvice與@ControllerAdvice的區(qū)別說(shuō)明
這篇文章主要介紹了@RestControllerAdvice與@ControllerAdvice的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java 使用openoffice進(jìn)行word轉(zhuǎn)換為pdf的方法步驟
這篇文章主要介紹了Java 使用openoffice進(jìn)行word轉(zhuǎn)換為pdf的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java通過(guò)調(diào)用C/C++實(shí)現(xiàn)的DLL動(dòng)態(tài)庫(kù)——JNI的方法
這篇文章主要介紹了Java通過(guò)調(diào)用C/C++實(shí)現(xiàn)的DLL動(dòng)態(tài)庫(kù)——JNI的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01

