mybatis和hibernate的對比總結

      網友投稿 1021 2025-04-03

      mybatis和hibernate

      第一步, 首先讓我們對mybatis和hibernate對比了解下

      1、 Hibernate :Hibernate 是當前非常流行的ORM框架,對數據庫結構提供了較為完整的封裝,都是為了簡化Dao層的操作。

      Mybatis:Mybatis同樣也是非常流行的ORM框架,主要著力點在于POJO 與SQL之間的映射關系,都是為了簡化Dao層的操作。

      mybatis和hibernate的對比總結

      2、Hibernate與MyBatis都可以是通過SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生 成Session,最后由Session來開啟執行事務和SQL語句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是

      差不多的。Hibernate和MyBatis都支持JDBC和JTA事務處理。

      3、Hibernate和Mybatis的二級緩存除了采用系統默認的緩存機制外,都可以通過實現你自己的緩存或為其他第三方緩存方 案,創建適配器來完全覆蓋緩存行為,一般在這里的話我們用encache和mybatis和spring集成比較多,這個時候你可以你學習下encache也可以去了解小分布式緩存mencached 還有oschache都可以學習下。

      MyBatis 參考資料官網:http://www.mybatis.org/core/zh/index.html

      Hibernate參考資料: http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html_single/

      不同點:

      1、hibernate是全自動,而mybatis是半自動。

      Hibernate完全實現了對JDBC的封裝,可看成"全自動洗衣機".調用一個save()方法就能實現插入操作,完全不需要寫sql.當然,它也支持類似sql的hql語句.ibatis需要自己寫sql,但是sql寫在配置文件(.xml)文件里面,可看成"半自動洗衣機".mybatis初級階段可理解成就是ibatis.

      2、hibernate不怎么需要寫sql,而mybatis需要把sql寫在配置文件里面。

      3、 hibernate數據庫移植性和擴展性遠大于mybatis,維護性比較好。

      Mybatis由于所有SQL都是依賴數據庫書寫的,所以擴展性,遷移性比較差,成本很高。Hibernate與數據庫具體的關聯都在XML中,所以HQL對具體是用什么數據庫并不是很關心,大大降低了對象與數據庫(oracle、mysql等)的耦合性。

      4、hibernate開發速度比mybatis相對快點

      Hibernate的開發難度要大于Mybatis。主要由于Hibernate比較復雜、龐大,學習周期較長。

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

      Hibernate和MyBatis都有相應的代碼生成工具。可以生成簡單基本的DAO層方法。

      針對高級查詢,Mybatis需要手動編寫SQL語句,以及ResultMap。而Hibernate有良好的映射機制,開發者無需關心SQL的生成與結果映射,可以更專注于業務流程。

      5、 hibernate擁有完整的日志系統,mybatis則欠缺一些。

      hibernate日志系統非常健全,涉及廣泛,包括:sql記錄、關系異常、優化警告、緩存提示、臟數據警告等;而mybatis則除了基本記錄功能外,功能薄弱很多。

      6、mybatis相比hibernate需要關心很多細節

      hibernate配置要比mybatis復雜的多,學習成本也比mybatis高。但也正因為mybatis使用簡單,才導致它要比hibernate關心很多技術細節。mybatis由于不用考慮很多細節,開發模式上與傳統jdbc區別很小,因此很容易上手并開發項目,但忽略細節會導致項目前期bug較多,因而開發出相對穩定的軟件很慢,而開發出軟件卻很快。hibernate則正好與之相反。但是如果使用hibernate很熟練的話,實際上開發效率絲毫不差于甚至超越mybatis。

      7、hibernate緩存機制比mybatis強大

      Hibernate一級緩存是Session緩存,利用好一級緩存就需要對Session的生命周期進行管理好。建議在一個Action操作中使用一個Session。一級緩存需要對Session進行嚴格管理。

      Hibernate二級緩存是SessionFactory級的緩存。 SessionFactory的緩存分為內置緩存和外置緩存。內置緩存中存放的是SessionFactory對象的一些集合屬性包含的數據(映射元素據及預定SQL語句等),對于應用程序來說,它是只讀的。外置緩存中存放的是數據庫數據的副本,其作用和一級緩存類似.二級緩存除了以內存作為存儲介質外,還可以選用硬盤等外部存儲設備。二級緩存稱為進程級緩存或SessionFactory級緩存,它可以被所有session共享,它的生命周期伴隨著SessionFactory的生命周期存在和消亡。

      MyBatis 包含一個非常強大的查詢緩存特性,它可以非常方便地配置和定制。MyBatis 3 中的緩存實現的很多改進都已經實現了,使得它更加強大而且易于配置。

      默認情況下是沒有開啟緩存的,除了局部的 session 緩存,可以增強變現而且處理循環 依賴也是必須的。要開啟二級緩存,你需要在你的 SQL 映射文件中添加一行:

      字面上看就是這樣。這個簡單語句的效果如下:

      映射語句文件中的所有 select 語句將會被緩存。

      映射語句文件中的所有 insert,update 和 delete 語句會刷新緩存。

      緩存會使用 Least Recently Used(LRU,最近最少使用的)算法來收回。

      根據時間表(比如 no Flush Interval,沒有刷新間隔), 緩存不會以任何時間順序 來刷新。

      緩存會存儲列表集合或對象(無論查詢方法返回什么)的 1024 個引用。

      緩存會被視為是 read/write(可讀/可寫)的緩存,意味著對象檢索不是共享的,而 且可以安全地被調用者修改,而不干擾其他調用者或線程所做的潛在修改

      8、sql直接優化上,mybatis要比hibernate方便很多

      由于mybatis的sql都是寫在xml里,因此優化sql比hibernate方便很多。而hibernate的sql很多都是自動生成的,無法直接維護sql;雖有hql,但功能還是不及sql強大,見到報表等變態需求時,hql也歇菜,也就是說hql是有局限的;hibernate雖然也支持原生sql,但開發模式上卻與orm不同,需要轉換思維,因此使用上不是非常方便。總之寫sql的靈活度上hibernate不及mybatis。

      9、mybait比hibernate更加靈活,駕馭型更好

      Mybatis優勢

      MyBatis可以進行更為細致的SQL優化,可以減少查詢字段。

      MyBatis容易掌握,而Hibernate門檻較高。

      Hibernate優勢

      Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。

      Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。

      Hibernate數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL。

      Hibernate有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳。

      MyBatis SQL

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在WPS文字運用公式計算(wps怎么寫公式計算)
      下一篇:出租屋管理系統
      相關文章
      亚洲成人免费网址| 久久亚洲日韩精品一区二区三区 | 亚洲av网址在线观看| 久久久久亚洲AV成人网人人软件| 亚洲第一第二第三第四第五第六| 成人亚洲国产va天堂| 亚洲精品一二三区| 亚洲成年网站在线观看| 亚洲精品福利你懂| 亚洲国产区男人本色在线观看| 精品国产日韩久久亚洲| 国产精品亚洲一区二区麻豆| 亚洲国产精品免费观看 | 337p日本欧洲亚洲大胆裸体艺术| 久久亚洲国产精品123区| 日韩亚洲变态另类中文| 国产亚洲3p无码一区二区| 精品国产综合成人亚洲区| 久久久久久亚洲精品中文字幕| 亚洲国产二区三区久久| 亚洲高清日韩精品第一区| 亚洲字幕在线观看| 亚洲中文字幕AV在天堂| 国产精品亚洲av色欲三区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 中文字幕不卡亚洲| 亚洲精品高清国产一线久久| 亚洲AV乱码久久精品蜜桃 | 午夜亚洲国产理论片二级港台二级 | 亚洲成色999久久网站| 亚洲美女aⅴ久久久91| 亚洲va在线va天堂成人| 亚洲码和欧洲码一码二码三码| 久久精品国产亚洲av瑜伽| 亚洲国产日韩成人综合天堂| 亚洲夜夜欢A∨一区二区三区| 久久精品国产亚洲夜色AV网站| 亚洲蜜芽在线精品一区| 亚洲精品国产精品国自产网站 | 亚洲精品高清久久| 亚洲人成在线中文字幕|