JPA是java的api, Hibernate是JPA的一個(gè)實(shí)現(xiàn)。MyBatis、Hibernate都是ORM框架, MyBatis沒有按照J(rèn)PA那套規(guī)范實(shí)現(xiàn)。系統(tǒng)的設(shè)計(jì)步驟你是從哪里拷貝的吧,我的經(jīng)歷告訴我,實(shí)際不是那樣的。
不管用JPA還是Hibernate都要用關(guān)系型數(shù)據(jù)庫(kù),用到關(guān)系型數(shù)據(jù)庫(kù),你就必須了解SQL語(yǔ)法。JPA抽象了api, 為了替代native sql,增加了學(xué)習(xí)成本,降低了性能。復(fù)雜的查詢還是只能用native sql。
只覺得ORM映射用起來很爽,其它功能好煩躁。最反感hibernate的瞬時(shí)態(tài)/持久態(tài)/托管態(tài), 寫業(yè)務(wù)代碼,你會(huì)操作到數(shù)據(jù)庫(kù)。domain一對(duì)一,一對(duì)多,多對(duì)多,延遲加載,級(jí)聯(lián)刪除,這些配置也很多。你配置了級(jí)聯(lián)刪除,如果某段代碼不想級(jí)聯(lián)刪除,sorry,還是用native sql吧。
跨數(shù)據(jù)庫(kù)服務(wù)器查詢,jpa,mybatis都做不到