MyBatis和hibernate的比较:
共同点:
1一个共同的思想ORM:
1.
从配置文件(通常是XML配置文件中)得到sessionfactory.
2. 由sessionfactory
产生
session
3. 在session
中完成对数据的增删改查和事务提交等.
4. 在用完之后关闭session
。
5. 在java
对象和
数据库之间有做mapping
的配置文件,也通常是xml
文件
2 Hibernate与MyBatis都可以是通过 SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
3 Hibernate和MyBatis都支持JDBC和JTA事务处理。
区别:
Mybatis自动提交事务。Hibernate是手动提交事务。
Mybatis导入一个主jar就基本满足,只有600多kb大小,hibernate导入的jar更多。
Mybatis配好了数据库方言,不能任意更改。Hibernate更换数据库比较方便,修改下配置信息就可以(前提是使用的HQL语言操作数据)。
Mybatis面向接口编程。hibernate面向对象编程。
Mybatis中的事务概念模糊,例如详细的事务的开启、关闭、回滚等,至多是session.save() --- 提交,比较明显。
Mybatis优势:
-
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
-
MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势:
-
Hibernate的DAO层(持久层)开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
2. Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
3. Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
4. Hibernate有更好的缓存机制,可以使用二级缓存、查询缓存。MyBatis本身提供的缓存机制不佳。