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