更新時間:2022-04-13 10:04:16 來源:動力節(jié)點 瀏覽3260次
其實JPA和mybatis大體上沒什么區(qū)別,架構上很相似,動力節(jié)點小編來告訴大家他們有哪些不同的地方。
GPA是java persistence api的縮寫,它的中文翻譯就是指程序JAVA持久層API,Mybatis相對來說比較實用的持久層框架。首先,兩者最大的不同就在于內部的反應對象,JPA的操作是在對象與對象之間的反射,而mybatis的處理對象是在對象和結果集合之間的反射。雖然其最終的持久層框架結果是一樣的,但是卻在操作過程中有千差萬別。
從整體的移植性來看,GPA的一致性相對較好,他在數(shù)據(jù)庫的兼容性基本都是相同的,所以不用擔心其他問題。一般來說springdatajpa都知道當一個接口繼承了GPA,接口之后便會自動具備數(shù)據(jù)移植的良好性質。由于mybatis是使用SQL語句,所以在移植時必須將數(shù)據(jù)庫的類型改為sql了。從這一點上來看,GPA更具優(yōu)勢,其次在操作層面修改字段的時候,mybatis也相對操作步驟比較多。
如果是學習操作持久層的話,用hibernate會比較麻煩,所以從具體學習操作來看,mybatis具有更強烈的優(yōu)勢,同時也可以使用springdatajpa,但是這一種方式更適合于單表。但在這里可以發(fā)現(xiàn)這一篇a的妥協(xié)性,為了支持這一特性,但在實際操作起來,并不推薦薦使用,因為這種操作方式并不符合領域驅動設計的目標和理念。
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一定加上,不然會報錯。