MyBatis和hibernate的比較:
共同點:
1一個共同的思想ORM:
1.
從配置文件(通常是XML配置文件中)得到sessionfactory.
2. 由sessionfactory
產生
session
3. 在session
中完成對數據的增刪改查和事務提交等.
4. 在用完之後關閉session
。
5. 在java
對象和
數據庫之間有做mapping
的配置文件,也通常是xml
文件
2 Hibernate與MyBatis都可以是通過 SessionFactoryBuider由XML配置文件生成SessionFactory,然後由SessionFactory 生成Session,最後由Session來開啓執行事務和SQL語句。其中SessionFactoryBuider,SessionFactory,Session的生命週期都是差不多的。
3 Hibernate和MyBatis都支持JDBC和JTA事務處理。
區別:
Mybatis自動提交事務。Hibernate是手動提交事務。
Mybatis導入一個主jar就基本滿足,只有600多kb大小,hibernate導入的jar更多。
Mybatis配好了數據庫方言,不能任意更改。Hibernate更換數據庫比較方便,修改下配置信息就可以(前提是使用的HQL語言操作數據)。
Mybatis面向接口編程。hibernate面向對象編程。
Mybatis中的事務概念模糊,例如詳細的事務的開啓、關閉、回滾等,至多是session.save() --- 提交,比較明顯。
Mybatis優勢:
-
MyBatis可以進行更爲細緻的SQL優化,可以減少查詢字段。
-
MyBatis容易掌握,而Hibernate門檻較高。
Hibernate優勢:
-
Hibernate的DAO層(持久層)開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。
2. Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。
3. Hibernate數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL。
4. Hibernate有更好的緩存機制,可以使用二級緩存、查詢緩存。MyBatis本身提供的緩存機制不佳。