mybatis 與 hibernate 的區別和應用場景(轉)
1 Hibernate : 標准的ORM(對象關系映射) 框架;
不要用寫sql, sql 自動語句生成;
使用Hibernate 對sql 進行優化,修改比較困難
應用場景: 試用需求,變化固定中小型項目;ERP,ORM,OA
2 mybatis: 程序員自己編寫sql, sql 修改,優化比較自由。
mybatis 是一個不完全的ORM 框架(部分), mybatis 存在
映射關系(輸入,輸出映射);
應用場景: 除了hibernate 的場景,主要應用需求項目較多的場景,
互聯網項目; 敏捷開發。
當希望對象的持久化對應用程序完全透明是,不適合使用mybatis
當數據庫有移植需求或需要支持多種數據庫時,不適合使用mybatis
映射關系描述:
hibernate: 對數據庫結構提供了較為完整的封裝,hibernate 的O/R Mapping實現了POJO 和數據庫表之間的映射,以及SQL 的自動生成和執行。
只需定義好了POJO 到數據庫表的映射關系,即可通過提供的方法完成持久層操作。
不需要對SQL 的熟練掌握, 會根據制定的存儲邏輯,自動生成對應的SQL 並調用JDBC 接口加以執行。
mybatis:POJO SQL之間的映射關系。然后通過映射配置文件,將SQL所需的參數,以及返回的結果字段映射到指定POJO。 相對“O/R”而言,iBATIS 是一種“Sql Mapping”的ORM實現。
數據庫的無關性:
hibernate 的 具體數據只需要利用xml 進行關聯; HQL 語句與數據庫無關
mybatis 更接近sql ,因此對數據庫的依賴較多。
Mybatis優勢
MyBatis可以進行更為細致的SQL優化,可以減少查詢字段。
MyBatis容易掌握,而Hibernate門檻較高。
Hibernate優勢
Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。
Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。
Hibernate數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL。
Hibernate有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳