看过网上各种各样的区别,感觉多而乱,故想自己总结一下。
mybatis和hibernate都是做数据持久化的工具,都是JDBC的轻量级封装,主要区别就在于二者在SQL语句的处理上。
1、hibernate数据库移植性远大于mybatis。
hibernate对SQL语句进行了封装,对外提高了HQL语句,而mybatis需要手动书写SQL语句,通常不同的数据库之间SQL语句的书写存在差异,在进行数据库移植时,hibernate的移植性必定优于mybatis。 2、 sql直接优化上,mybatis要比hibernate方便很多
mybatis需要手动书写SQL语句,程序员可以很好的进行SQL优化。 3、hibernate是全自动,而mybatis是半自动。
hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。 4、HQL和SQL的不同
hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性
sql是面向数据库表查询,格式:from + 表名 + where + 表中字段