Mybatis與Hibernate的差別。本站提示廣大學習愛好者:(Mybatis與Hibernate的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是Mybatis與Hibernate的差別正文
之前沒怎樣用過mybatis,只曉得與hibernate一樣是個orm數據庫框架。跟著應用闇練度的增長,發明它與hibernate差別長短常年夜的感興致的同伙經由過程本文一路進修吧
趁著這個周末,抽閒把一些經常使用的技巧整頓出來,小編還會不按期的更新內容。
起首簡略引見下二者的概念:
Hibernate :Hibernate 是以後最風行的ORM框架,對數據庫構造供給了較為完全的封裝。
Mybatis:Mybatis異樣也長短常風行的ORM框架,重要出力點在於POJO 與SQL之間的映照關系。
其次詳細從幾個方面說一下二者的差別:
1.二者最年夜的差別:
針對簡略邏輯,Hibernate和MyBatis都有響應的代碼生成對象,可以生成簡略根本的DAO層辦法。
針對高等查詢,Mybatis須要手動編寫SQL語句,和ResultMap。而Hibernate有優越的映照機制,開辟者無需關懷SQL的生成與成果映照,可以更專注於營業流程。
2.開辟難度比較
Hibernate的開辟難度要年夜於Mybatis。重要因為Hibernate比擬龐雜、宏大,進修周期較長。
而Mybatis則絕對簡略一些,而且Mybatis重要依附於sql的書寫,閃開發者感到更熟習。
3.sql書寫比擬
Mybatis的SQL是手動編寫的,所以可以按需求指定查詢的字段。不外沒有本身的日記統計,所以要借助log4j來記載日記。
Hibernate也能夠本身寫SQL來指定須要查詢的字段,但如許就損壞了Hibernate開辟的簡練性。不外Hibernate具有本身的日記統計。
4.數據庫擴大性比擬
Mybatis因為一切SQL都是依附數據庫書寫的,所以擴大性,遷徙性比擬差。
Hibernate與數據庫詳細的聯系關系都在XML中,所以HQL對詳細是用甚麼數據庫其實不是很關懷。
5.緩存機制比擬
雷同點:Hibernate和Mybatis的二級緩存除采取體系默許的緩存機制外,都可以經由過程完成你本身的緩存或為其他第三方緩存計劃,創立適配器來完整籠罩緩存行動。
分歧點:Hibernate的二級緩存設置裝備擺設在SessionFactory生成的設置裝備擺設文件中停止具體設置裝備擺設,然後再在詳細的表-對象映照中設置裝備擺設是那種緩存。
MyBatis的二級緩存設置裝備擺設都是在每一個詳細的表-對象映照中停止具體設置裝備擺設,如許針對分歧的表可以自界說分歧的緩存機制。而且Mybatis可以在定名空間中同享雷同的緩存設置裝備擺設和實例,經由過程Cache-ref來完成。
二者比擬:由於Hibernate對查詢對象有著優越的治理機制,用戶無需關懷SQL。所以在應用二級緩存時假如湧現髒數據,體系會報失足誤並提醒。
而MyBatis在這一方面,應用二級緩存時須要特殊當心。假如不克不及完整肯定數據更新操作的涉及規模,防止Cache的自覺應用。不然,髒數據的湧現會給體系的正常運轉帶來很年夜的隱患。
6.總結:
mybatis:玲珑、便利、高效、簡略、直接、半主動
hibernate:壯大、便利、高效、龐雜、繞彎子、全主動
Hibernate與MyBatis都可所以經由過程SessionFactoryBuider由XML設置裝備擺設文件生成SessionFactory,然後由SessionFactory 生成Session,最初由Session來開啟履行事務和SQL語句。
而MyBatis的優勢是MyBatis可以停止更加過細的SQL優化,可以削減查詢字段,而且輕易控制。
Hibernate的優勢是DAO層開辟比MyBatis簡略,Mybatis須要保護SQL和成果映照。數據庫移植性很好,MyBatis的數據庫移植性欠好,分歧的數據庫須要寫分歧SQL。有更好的二級緩存機制,可使用第三方緩存。MyBatis自己供給的緩存機制欠安。
mybatis:
1. 入門簡略,即學即用,供給了數據庫查詢的主動對象綁定功效,並且延續了很好的SQL應用經歷,關於沒有那末高的對象模子請求的項目來講,相當完善。
2. 可以停止更加過細的SQL優化,可以削減查詢字段。
3. 缺陷就是框架照樣比擬粗陋,功效另有缺掉,固然簡化了數據綁定代碼,然則全部底層數據庫查詢現實照樣要本身寫的,任務量也比擬年夜,並且不太輕易順應疾速數據庫修正。
4. 二級緩存機制欠安。
hibernate:
1. 功效壯大,數據庫有關性好,O/R映照才能強,假如你對Hibernate相當精曉,並且對Hibernate停止了恰當的封裝,那末你的項目全部耐久層代碼會相當簡略,須要寫的代碼很少,開辟速度很快,異常爽。
2. 有更好的二級緩存機制,可使用第三方緩存。
3. 缺陷就是進修門坎不低,要精曉門坎更高,並且怎樣設計O/R映照,在機能和對象模子之間若何衡量獲得均衡,和如何用好Hibernate方面須要你的經歷和才能都很強才行。
舉個抽象的比方:
mybatis:機械對象,應用便利,拿來就用,但任務照樣要本身來作,不外對象是活的,怎樣使由我決議。
hibernate:智能機械人,但研發它(進修、闇練度)的本錢很高,任務都可以解脫他了,但僅限於它能做的事。