亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 php教程 PHP開發(fā) Mybatis與Hibernate的差別

Mybatis與Hibernate的差別

Jan 05, 2017 pm 05:23 PM

以前沒怎麼用過mybatis,只知道跟hibernate一樣是個orm資料庫框架。隨著使用熟練度的增加,發(fā)現(xiàn)它與hibernate區(qū)別是非常大的有興趣的朋友透過本文一起學(xué)習(xí)吧

趁著這個週末,抽空把一些常用的技術(shù)整理出來,小編還會不定期的更新內(nèi)容。

首先簡單介紹下兩者的概念:

Hibernate :Hibernate 是目前最受歡迎的ORM框架,對資料庫結(jié)構(gòu)提供了較為完整的封裝。

Mybatis:Mybatis同樣也是非常流行的ORM框架,主要著力點在於POJO 與SQL之間的映射關(guān)係。

其次具體從幾個方面說一下兩者的區(qū)別:

1.兩者最大的區(qū)別:

針對簡單邏輯,Hibernate和MyBatis都有相應(yīng)的程式碼產(chǎn)生工具,可以產(chǎn)生簡單基本的DAO層方法。

針對進階查詢,Mybatis需要手動編寫SQL語句,以及ResultMap。而Hibernate有良好的映射機制,開發(fā)者不需要關(guān)心SQL的生成與結(jié)果映射,可以更專注於業(yè)務(wù)流程。

2.開發(fā)難度對比

Hibernate的開發(fā)難度大於Mybatis。主要由於Hibernate比較複雜、龐大,學(xué)習(xí)週期較長。

而Mybatis則相對簡單一些,且Mybatis主要依賴sql的書寫,讓開發(fā)者感覺更熟悉。

3.sql書寫比較

Mybatis的SQL是手動寫的,所以可以依需求指定查詢的欄位。不過沒有自己的日誌統(tǒng)計,所以要使用log4j來記錄日誌。

Hibernate也可以自己寫SQL來指定需要查詢的字段,但這樣就破壞了Hibernate開發(fā)的簡潔性。不過Hibernate有自己的日誌統(tǒng)計。

4.資料庫擴充性比較

Mybatis由於所有SQL都是依賴資料庫書寫的,所以擴充性,遷移性比較差。

Hibernate與資料庫具體的關(guān)聯(lián)都在XML中,所以HQL對具體是用什麼資料庫並不是很在意。

5.快取機制比較

相同點:Hibernate和Mybatis的二級快取除了採用系統(tǒng)預(yù)設(shè)的快取機制外,都可以透過實作你自己的快取或為其他第三方快取方案,建立適配器來完全覆蓋快取行為。

不同點:Hibernate的二級快取配置在SessionFactory產(chǎn)生的設(shè)定檔中進行詳細(xì)配置,然後再在特定的表-物件映射中配置是那種快取。

MyBatis的二級快取配置都是在每個特定的表-物件映射中進行詳細(xì)配置,這樣針對不同的表可以自訂不同的快取機制。並且Mybatis可以在命名空間中共享相同的快取配置和實例,透過Cache-ref來實現(xiàn)。

兩者比較:因為Hibernate對查詢物件有著良好的管理機制,使用者不需要關(guān)心SQL。所以使用二級快取時如果出現(xiàn)髒數(shù)據(jù),系統(tǒng)會報出錯誤並提示。

而MyBatis在這一方面,使用二級快取時需要特別小心。如果無法完全確定資料更新操作的波及範(fàn)圍,避免Cache的盲目使用。否則,髒數(shù)據(jù)的出現(xiàn)會為系統(tǒng)的正常運作帶來很大的隱患。

6.總結(jié):

mybatis:小巧、方便、高效、簡單、直接、半自動
hibernate:強大、方便、高效、複雜、繞彎子、全自動

Hibernate與MyBatis都可以是透過SessionFactoryBuider由XML配置檔案產(chǎn)生SessionFactory,接著由SessionFactory 產(chǎn)生Session,最後由Session來開啟執(zhí)行交易和SQL語句。

而MyBatis的優(yōu)勢是MyBatis可以進行更為細(xì)緻的SQL優(yōu)化,可以減少查詢字段,並且容易掌握。

Hibernate的優(yōu)勢是DAO層開發(fā)比MyBatis簡單,Mybatis需要維護SQL和結(jié)果映射。資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。有更好的二級快取機制,可以使用第三方快取。 MyBatis本身提供的快取機制不佳。

mybatis:

1. 入門簡單,即學(xué)即用,提供了資料庫查詢的自動物件綁定功能,而且延續(xù)了很好的SQL使用經(jīng)驗,對於沒有那麼高的物件模型要求的專案來說,相當(dāng)完美。

2. 可以進行更細(xì)緻的SQL最佳化,可以減少查詢欄位。

3. 缺點就是框架還是比較簡陋,功能尚有缺失,雖然簡化了資料綁定程式碼,但是整個底層資料庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應(yīng)快速資料庫修改。

4. 二級快取機制不佳。

hibernate:

1. 功能強大,資料庫無關(guān)性好,O/R映射能力強,如果你對Hibernate相當(dāng)精通,而且對Hibernate進行了適當(dāng)?shù)姆庋b,那麼你的專案整個持久層程式碼會相當(dāng)簡單,需要寫的程式碼很少,開發(fā)速度很快,非常爽。

2. 有更好的二級快取機制,可以使用第三方快取。

3. 缺點就是學(xué)習(xí)門檻不低,要精通門檻更高,而且怎麼設(shè)計O/R映射,在性能和對像模型之間如何權(quán)衡取得平衡,以及怎樣用好Hibernate方面需要你的經(jīng)驗和能力都很強才行。
舉個形象的比喻:

mybatis:機械工具,使用方便,拿來就用,但工作還是要自己來做,不過工具是活的,怎麼使由我決定。

hibernate:智慧機器人,但研發(fā)它(學(xué)習(xí)、熟練度)的成本很高,工作都可以擺脫他了,但僅限於它能做的事。??


更多Mybatis與Hibernate的區(qū)別相關(guān)文章請關(guān)注PHP中文網(wǎng)!


本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)