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