1. 兩者最大的區(qū)別 針對簡單邏輯,都有對應(yīng)的代碼生成工具,可以生成簡單基本的dao層方法; 針對高級查詢,mybatis要手動編寫sql語句和resultMap,而hibernate有良好的映射機制;
2. 開發(fā)難度對比 hibernate > mybatis
3. 日志統(tǒng)計 hibernate有自己的日志統(tǒng)計功能,而mybatis需要借助log4j來記錄日志。
4. 數(shù)據(jù)庫擴展比較 hibernate > mybatis
5. 緩存機制比較,因為hibernate對查詢對象有良好的管理機制,用戶無需關(guān)心sql,所以使用二級緩存如果出現(xiàn)臟數(shù)據(jù),系統(tǒng)會報錯。而mybatis,如果不能獲取最新數(shù)據(jù),應(yīng)該避免緩存的使用,臟數(shù)據(jù)的出現(xiàn)會給系統(tǒng)的正常運行帶來很大的隱患。
6. 如何選擇mybatis需要編寫sql和映射規(guī)則,工作量大于hibernate; mybatis支持的工具也有限,不能像hibernate那樣有許多插件可以幫助生成映射代碼和關(guān)聯(lián)關(guān)系; 對于性能要求不太苛刻的系統(tǒng),比如管理系統(tǒng)、ERP等推薦hibernate; 對于性能要求高、響應(yīng)快、靈活的系統(tǒng),比如電商系統(tǒng),推薦使用mybatis;