天天看點

Mybatis介紹一、Mybatis曆史二、Mybatis和hibernate的優缺點比較

一、Mybatis曆史

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。

二、Mybatis和hibernate的優缺點比較

1、資料庫移植性

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

Hibernate與資料庫具體的關聯都在XML中,是以HQL對具體是用什麼資料庫并不是很關心。

2、SQL方面

sql方面:mybaits通過mapper.xml維護映射結果,程式員手動編寫sql相比hibernate自動生成hql(hibernate sql)更加靈活,sql調優更加容易(hibernate因為更好的封裝性,開發效率提高的同時,sql語句調優要更費力,當然可以手動修改sql來優化,但是同時也會影響開發效率);hibernate的hql資料庫移植性更好,展現在強壯性。hibernate在級聯删除的時候效率低;資料量大, 表多的時候,基于關系操作會變得複雜。

3、緩存方面

mybatis和hibernate都可以使用第三方緩存,而hibernate相比maybatis有更好的二級緩存機制。

總結一

mybatis:

1. 入門簡單,即學即用,提供了資料庫查詢的自動對象綁定功能,而且延續了很好的SQL使用經驗,對于沒有那麼高的對象模型要求的項目來說,相當完美。

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

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

4. 二級緩存機制不佳。

hibernate:

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

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

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

總結二

Hibernate優勢

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

2、Hibernate對對象的維護和緩存要比MyBatis好,對增删改查的對象的維護要友善。

3、Hibernate資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。

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

Mybatis優勢

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

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

繼續閱讀