更新時間:2022-04-13 10:04:16 來源:動力節(jié)點(diǎn) 瀏覽3392次
其實(shí)JPA和mybatis大體上沒什么區(qū)別,架構(gòu)上很相似,動力節(jié)點(diǎn)小編來告訴大家他們有哪些不同的地方。
GPA是java persistence api的縮寫,它的中文翻譯就是指程序JAVA持久層API,Mybatis相對來說比較實(shí)用的持久層框架。首先,兩者最大的不同就在于內(nèi)部的反應(yīng)對象,JPA的操作是在對象與對象之間的反射,而mybatis的處理對象是在對象和結(jié)果集合之間的反射。雖然其最終的持久層框架結(jié)果是一樣的,但是卻在操作過程中有千差萬別。
從整體的移植性來看,GPA的一致性相對較好,他在數(shù)據(jù)庫的兼容性基本都是相同的,所以不用擔(dān)心其他問題。一般來說springdatajpa都知道當(dāng)一個接口繼承了GPA,接口之后便會自動具備數(shù)據(jù)移植的良好性質(zhì)。由于mybatis是使用SQL語句,所以在移植時必須將數(shù)據(jù)庫的類型改為sql了。從這一點(diǎn)上來看,GPA更具優(yōu)勢,其次在操作層面修改字段的時候,mybatis也相對操作步驟比較多。
如果是學(xué)習(xí)操作持久層的話,用hibernate會比較麻煩,所以從具體學(xué)習(xí)操作來看,mybatis具有更強(qiáng)烈的優(yōu)勢,同時也可以使用springdatajpa,但是這一種方式更適合于單表。但在這里可以發(fā)現(xiàn)這一篇a的妥協(xié)性,為了支持這一特性,但在實(shí)際操作起來,并不推薦薦使用,因?yàn)檫@種操作方式并不符合領(lǐng)域驅(qū)動設(shè)計(jì)的目標(biāo)和理念。
mybatis就是mapper層,JPA就是repository層,其他都一樣的。
JPA就是把mapper層的接口換成repository的接口:
那么接口具體長什么樣呢?
mapper層
自己寫sql語句
JPA的repository:
沒有具體sql語句,看起來沒有實(shí)現(xiàn)一樣,但其實(shí)是遵循規(guī)則的實(shí)現(xiàn),你只要寫 findByXxx(Xxx xx) 就能根據(jù)某個鍵自動實(shí)現(xiàn)數(shù)據(jù)庫查詢,當(dāng)然其他的語句也是可以實(shí)現(xiàn)的。
如果你覺得不靈活,也可以自己寫,例如
最后的nativeQuery一定加上,不然會報錯。
初級 202925
初級 203221
初級 202629
初級 203743