最大的區別在於:ibatas的sql語句須要本身手動寫,而hibernate可以在程序運行時自動生成。可是不要就這樣覺得hibernate比ibatas方便,其實兩者熟悉以後的效率差很少。而hibernate還可以自動建表等等,這樣的好處就在於你帶着這個程序,不管到什麼機器上,你都不須要數據庫,應爲它能自動爲你完成,而ibatas就必需要有相應的數據庫表才能進行移植Hibernate的特色:Hibernate功能強大,數據庫無關性好,O/R(對象/關係)映射能力強,若是你對Hibernate至關精通,並且對Hibernate進行了適當的封裝,那麼你的項目整個持久層代碼會至關簡單,須要寫的代碼不多,開發速度很快,很是爽。Hibernate對數據庫結構提供了較爲完整的封裝,Hibernate的O/R Mapping實現了POJO(實體類) 和數據庫表之間的映射,以及SQL 的自動生成和執行。程序員每每只需定義好了POJO 到數據庫表的映射關係,便可經過Hibernate 提供的方法完成持久層操做。程序員甚至不須要對SQL 的熟練掌握, Hibernate/OJB 會根據制定的存儲邏輯,自動生成對應的SQL 並調用JDBC 接口加以執行。Hibernate的缺點就是學習門檻不低,要精通門檻更高,並且怎麼設計O/R映射,在性能和對象模型之間如何權衡取得平衡,以及怎樣用好Hibernate方面須要你的經驗和能力都很強才行,可是Hibernate如今已是主流O/R Mapping框架,從文檔的豐富性,產品的完善性,版本的開發速度都要強於iBATIS。iBATIS的特色:iBATIS入門簡單,即學即用,提供了數據庫查詢的自動對象綁定功能,並且延續了很好的SQL使用經驗,對於沒有那麼高的對象模型要求的項目來講,至關完美。iBATIS的缺點就是框架仍是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,可是整個底層數據庫查詢實際仍是要本身寫的,工做量也比較大,並且不太容易適應快速數據庫修改。當系統屬於二次開發,沒法對數據庫結構作到控制和修改,那iBATIS的靈活性將比Hibernate更適合。系統數據處理量巨大,性能要求極爲苛刻,這每每意味着咱們必須經過通過高度優化的SQL語句(或存儲過程)才能達到系統性能設計指標。在這種狀況下iBATIS會有更好的可控性和表現。