1. 程式人生 > >hibernate與mybatis的優缺點

hibernate與mybatis的優缺點

1、hibernate真正掌握要比mybatis難,因為hibernate的功能和特性非常多,還不適合多表關聯查詢。

2、hibernate和mybatis都有程式碼生成工具,可以生成簡單的dao方法。但對於高階查詢mybatis需要自己寫sql以及resultMap,而hibernate有良好的反射機制,提供預定義查詢只需遵循一定的語法規範無需寫sql語句。

3、hibernate調優方案:1、制定合理的快取策略2、儘量使用延遲載入特性3、採用合理的session管理機制4、使用批量抓取設定合理的批處理引數5、進行合理的O/R對映設計

      mybatis調優方案:mybatis和hibernate的session是一致的所以也需要合理的session管理機制,可以進行詳細的sql優化

4、hibernate查詢會將所有關聯表的欄位全部查詢出來,會導致效能消耗,當然hibernate也可以自己寫sql指定欄位,但這就破壞了hibernate的簡潔性

      mybatis的sql是自己手動編寫的,所以可以指定查詢欄位

      hibernate自帶日誌統計,會將sql打印出來而hibernate的sql被很多人嫌棄太醜

      mybatis不帶日誌統計需要使用log4j,而mybatis的sql是自己手動寫的調整也方便

5、hibernate與資料庫管聯只需在xml檔案中配置即可,所有的HQL語句都與具體使用的資料庫無關,移植性很好

      mybatis所有的sql都是依賴所用資料庫的,所以不能更換資料庫,移植性差

6、hibernate是在jdbc上進行一次封裝,mybatis是基於原生的jdbc,執行速度較快

總結:

hibernate優勢:

hibernate的dao層開發比mybatis簡單,mybatis需要維護sql和結果對映

hibernate對物件的維護和快取要比mybatis好,對增刪改查的物件維護要方便

hibernate資料庫移植性好,mybatis不同的資料庫要寫不同的sql,移植性差

mybatis優勢:

mybatis門檻較低更容易掌握

mybatis可以進行sql優化,自己編寫sql可以指定查詢欄位

如果有上千萬的表或者單次查詢或提交百萬資料以上不建議使用hibernate

如果統計功能,多表關聯查詢較多較複雜建議使用mybatis