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
spring整合使用持久層框架mybatis(二)
id sqlsessionfactory class org.mybatis.spring.sqlsessionfactorybean name datasource ref datasource name configlocation value classpath mybatis config....
hibernate與mybaitis快取對比
hibernate的一級快取為session,是內建快取,不可解除安裝。二級快取為sessionfactory,包含了內建快取和外接快取,sessionfactory 控制的程序級快取。是全域性共享的快取,凡是會呼叫二級快取的查詢方法 都會從中受益。當查詢時候,會首先查詢一級快取中的資料,如果沒有再...
Hibernate與JDO肩並肩
在theserverside.com上有一些人聲稱jdo的開發人員已經把jdo帶向錯誤的道路,並且指出hibernate相對更優秀。然而,根據我的經驗 它們有許多共同的特徵,包括 因此,jdo 和 hibernate 兩種版本的同一應用程式經常很相似。關於如何裝載物件和執行查詢,我們來看看下面的例子...