關(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)文章
idea打開(kāi)運(yùn)行配置java?web項(xiàng)目的全過(guò)程
這篇文章主要給大家介紹了關(guān)于idea打開(kāi)運(yùn)行配置java?web項(xiàng)目的相關(guān)資料,有些時(shí)候我們用IDEA跑之前用eclipse中運(yùn)行的項(xiàng)目的時(shí)候,總是不止所措,要不就是只展示html,要不就是不能部署成功,需要的朋友可以參考下2023-08-08
Java Serializable和Parcelable詳解及實(shí)例代碼
這篇文章主要介紹了Java Serializable和Parcelable詳解,并附實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-09-09
springmvc @ResponseStatus和ResponseEntity的使用
這篇文章主要介紹了springmvc @ResponseStatus和ResponseEntity的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
關(guān)于Springboot日期時(shí)間格式化處理方式總結(jié)
這篇文章主要介紹了關(guān)于Springboot日期時(shí)間格式化處理方式總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
java實(shí)現(xiàn)json字符串格式化處理的工具類
這篇文章主要為大家詳細(xì)介紹了如何使用java實(shí)現(xiàn)json字符串格式化處理的工具類,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理
這篇文章主要介紹了詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理,阻塞隊(duì)列是Java util.concurrent包下重要的數(shù)據(jù)結(jié)構(gòu),有興趣的可以了解一下2017-06-06
聊聊@Autowired注解注入,寫(xiě)接口名字還是實(shí)現(xiàn)類的名字
這篇文章主要介紹了聊聊@Autowired注解注入,寫(xiě)接口名字還是實(shí)現(xiàn)類的名字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

