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

JPA就是把mapper層的接口換成repository的接口
那么接口具體長什么樣呢?
mapper層
自己寫sql語句

JPA的repository
沒有具體sql語句,看起來沒有實現(xiàn)一樣,但其實是遵循規(guī)則的實現(xiàn),你只要寫 findByXxx(Xxx xx) 就能根據(jù)某個鍵自動實現(xiàn)數(shù)據(jù)庫查詢,當然其他的語句也是可以實現(xiàn)的。

如果你覺得不靈活,也可以自己寫,例如

最后的nativeQuery一定加上,不然會報錯。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java Serializable和Parcelable詳解及實例代碼
這篇文章主要介紹了Java Serializable和Parcelable詳解,并附實例代碼的相關資料,需要的朋友可以參考下2016-09-09
springmvc @ResponseStatus和ResponseEntity的使用
這篇文章主要介紹了springmvc @ResponseStatus和ResponseEntity的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
詳解Java阻塞隊列(BlockingQueue)的實現(xiàn)原理
這篇文章主要介紹了詳解Java阻塞隊列(BlockingQueue)的實現(xiàn)原理,阻塞隊列是Java util.concurrent包下重要的數(shù)據(jù)結構,有興趣的可以了解一下2017-06-06
聊聊@Autowired注解注入,寫接口名字還是實現(xiàn)類的名字
這篇文章主要介紹了聊聊@Autowired注解注入,寫接口名字還是實現(xiàn)類的名字,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

