1. 程式人生 > >MyBatise 與Hibernate 區別 的認識 概括

MyBatise 與Hibernate 區別 的認識 概括

今天來描述 我對於 Mybatise 與 Hibernate 的認識

mybatis 的概述: 是新興主流的持久層的框架
SSM 框架 裡的 重要 是 程式語言 操作資料庫
之前 也有類似 框架 ====》SSH
整合SSH框架的系統從職責上分為四層:表示層、業務邏輯層、資料持久層和域模組層(實體層),以幫助開發人員在短期內搭建結構清晰、可複用性好、維護方便的Web應用程式。

-------》類似有 使用Hibernate?

1). 對JDBC訪問資料庫的程式碼做了封裝,大大簡化了資料訪問層繁瑣的重複性程式碼。

2)、Hibernate是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作,將軟體開發人員從大量相同的資料持久層相關程式設計工作中解放出來,使開發更物件化了。

3)、移植性好,支援各種資料庫,如果換個資料庫只要在配置檔案中變換配置就可以了,不用改變hibernate程式碼。

4)、支援透明持久化,因為hibernate操作的是純粹的(pojo)java類,沒有實現任何介面,沒有侵入性。所以說它是一個輕量級框架。

那麼我們現在的MyBatise 框架優勢如何的呢?
歷史印記-------------
MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。

mybatis:

  1. 入門簡單,即學即用,提供了資料庫查詢的自動物件繫結功能,而且延續了很好的SQL使用經驗,對於沒有那麼高的物件模型要求的專案來說,相當完美。

  2. 可以進行更為細緻的SQL優化,可以減少查詢欄位。

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

  4. 二級快取機制不佳。

而 ------------》 hibernate:

  1. 功能強大,資料庫無關性好,O/R對映能力強,如果你對Hibernate相當精通,而且對Hibernate進行了適當的封裝,那麼你的專案整個持久層程式碼會相當簡單,需要寫的程式碼很少,開發速度很快,非常爽。

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

  3. 缺點就是學習門檻不低,要精通門檻更高,而且怎麼設計O/R對映,在效能和物件模型之間如何權衡取得平衡,以及怎樣用好Hibernate方面需要你的經驗和能力都很強才行。
    舉個形象的比喻:

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

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