第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

關(guān)于MyBatis和Hibernate的區(qū)別?

關(guān)于MyBatis和Hibernate的區(qū)別?

請簡述MyBatis和Hibernate的區(qū)別
查看完整描述

3 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

答:Hibernate和Mybatis都是orm對象關(guān)系映射框架,都是用于將數(shù)據(jù)持久化的框架技術(shù)。
Hiberante較深度的封裝了jdbc,對開發(fā)者寫sql的能力要求的不是那么的高,我們只要通過hql語句操作對象即可完成對數(shù)據(jù)持久化的操作了。
另外hibernate可移植性好,如一個(gè)項(xiàng)目開始使用的是mysql數(shù)據(jù)庫,但是隨著業(yè)務(wù)的發(fā)展,現(xiàn)mysql數(shù)據(jù)庫已經(jīng)無法滿足當(dāng)前的繡球了,現(xiàn)在決定使用Oracle數(shù)據(jù)庫,雖然sql標(biāo)準(zhǔn)定義的數(shù)據(jù)庫間的sql語句差距不大,但是不同的數(shù)據(jù)庫sql標(biāo)準(zhǔn)還是有差距的,那么我們手動(dòng)修改起來會(huì)存在很大的困難,使用hibernate只需改變一下數(shù)據(jù)庫方言即可搞定。用hibernate框架,數(shù)據(jù)庫的移植變的非常方便。
但是hibernate也存在著諸多的不足,比如在實(shí)際開發(fā)過程中會(huì)生成很多不必要的sql語句耗費(fèi)程序資源,優(yōu)化起來也不是很方便,且對存儲(chǔ)過程支持的也不夠太強(qiáng)大。但是針對于hibernate它也提供了一些優(yōu)化策略,比如說懶加載、緩存、策略模式等都是針對于它的優(yōu)化方案。
Mybatis 也是對jdbc的封裝,但是封裝的沒有hibernate那么深,我們可以再配置文件中寫sql語句,可以根據(jù)需求定制sql語句,數(shù)據(jù)優(yōu)化起來較hibernate容易很多。
Mybatis要求程序員寫sql的能力要相對使用hibernate的開發(fā)人員要高的多,且可移植性也不是很好。
涉及到大數(shù)據(jù)的系統(tǒng)使用Mybatis比較好,因?yàn)閮?yōu)化較方便。涉及的數(shù)據(jù)量不是很大且對優(yōu)化沒有那么高,可以使用hibernate

查看完整回答
反對 回復(fù) 2019-09-14
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

1) 對于每個(gè)實(shí)體,需要寫一個(gè)dao接口文件。編碼復(fù)雜度C(n)=O(n),即會(huì)隨實(shí)體的增長,編碼量呈線性增長。當(dāng)n較大時(shí),會(huì)增加許多人力物力消耗。
2) 實(shí)體Javabean與DB表的map映射文件太多;或者,實(shí)體Javabean文件注解用得太泛濫,太多注解難以記憶,增加開發(fā)人員負(fù)擔(dān)。Mybatis中實(shí)體對應(yīng)的mapper文件,代碼太多,雖然可以自動(dòng)生成,但閱讀性太差。編寫和調(diào)試sql語句需要大量時(shí)間,降低開發(fā)效率。
3) 實(shí)體操作默認(rèn)的條件,一般以id作為條件,但開發(fā)時(shí),一般不會(huì)提前知道id;若用其它條件作為查詢等,需要在接口文件新定義方法。如一個(gè)實(shí)體有10個(gè)字段,2個(gè)字段組合一個(gè)查詢方法,則有 =45個(gè)查詢方法;若算上3個(gè)字段,4個(gè)字段的組合,則更多。
4) 接口文件定義好后,若后期發(fā)現(xiàn)定義的方法不能滿足需求,需要定義新的方法,又要修改接口文件;若是系統(tǒng)已經(jīng)上線,還要需要重新開發(fā)、測試、發(fā)布等。
5) 當(dāng)一個(gè)表新增一個(gè)字段,刪除一個(gè)字段,或修改一個(gè)字段時(shí),Mybatis需要修改mapper映射文件,幾乎其中的每個(gè)方法都要修改。修改字段,Mybatis在編譯期不能自動(dòng)發(fā)現(xiàn)錯(cuò)誤。Hibernate通過xml文件或有注解的Javabean文件,同步DB的表結(jié)構(gòu)時(shí),也不能實(shí)現(xiàn)刪除和更新。更新時(shí),它是忽略原來的字段,然后新增一個(gè)字段,除非刪除了表,重新再建一次。要是DB的表已保存了數(shù)據(jù),不能刪除,還是要手動(dòng)去更改數(shù)據(jù)庫。
6) Hibernate想讓ORM框架做完DB所有的事情,反而使框架變得太復(fù)雜,不易于使用。Hibernate的ORM模型不能查詢一部分?jǐn)?shù)據(jù),即使用戶沒有使用到,也會(huì)將所有關(guān)聯(lián)的數(shù)據(jù)都查詢出來。
7) Hibernate的概念太復(fù)雜,學(xué)習(xí)成本高,更新會(huì)先查詢再更新,n+1問題。Mybatis即使進(jìn)行單表的Suid操作也需要人工寫sql或生成sql文件,需要維護(hù)的sql太多。
8) 需要寫很多的判斷字段是否為空(null) ,是否是空字符串的語句;開發(fā)人員需要承擔(dān)太多類似的重復(fù),乏味的編程工作。


查看完整回答
反對 回復(fù) 2019-09-14
  • 3 回答
  • 0 關(guān)注
  • 796 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號