Mybatis與JPA的區別:
1.ORM映射不同:
Mybatis是半自動的ORM框架,提供數據庫與結果集的映射;
JPA(Hibernate)是全自動的ORM框架,提供對象與數據庫的映射;
2.可移植性不同:
JPA(Hibernate)通過它強大的映射結構和hql語言,大大降低了對象與數據庫(oracle、mysql等)的耦合性
Mybatis由於需要手寫sql,因此與數據庫的耦合性直接取決於程序員寫sql的方法,如果sql不具通用性而用了很多某數據庫特性的sql語句的話,移植性也會隨之降低很多,成本很高。
3.日志系統的完整性不同:
JPA(Hibernate)日志系統非常健全,涉及廣泛,包括:sql記錄、關系異常、優化警告、緩存提示、臟數據警告等;而Mybatis則除了基本記錄功能外,功能薄弱很多。
4.SQL優化上的區別:
由於Mybatis的sql都是寫在xml里,因此優化sql比Hibernate方便很多。而Hibernate的sql很多都是自動生成的,無法直接維護sql;雖有hql,但功能還是不及sql強大,見到報表等變態需求時,hql也歇菜,也就是說hql是有局限的;hibernate雖然也支持原生sql,但開發模式上卻與orm不同,需要轉換思維,因此使用上不是非常方便。總之寫sql的靈活度上Hibernate不及Mybatis。
5.學習成本上的區別:
如果用Hibernate學習起來比較費時間,而Mybatis相對來說比較簡單,也可以用springdata,但個人覺得springdata只適合單表。