一、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門檻較高。