hibernate与mybatis比较

来源:互联网 发布:js window对象子对象 编辑:程序博客网 时间:2024/05/29 12:28

一、        开发对比

1.从开发的重量对比,hibernate比mybatis重很多

2. hibernate有自动建数据库表(包括表结构的更新等功能),开发过程中主要要关心业务逻辑,对数据表的生成修改,由hibernate底层完成;mybatis是能在数据库中操作数据表,如果需要更新表结构,只能操作数据库,不能用java代码实现。

3.Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

4.hibernate与mybatis都可以根据工具生成相应的简单的dao层。

 

二、        技术功能对比

1. hibernate开发社区与技术提供大于mybatis。

Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8。而Mybatis相对平静,工具较少,当前最高版本3.2。

2. hibernate数据库移植性远大于mybatis。

hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。

3. hibernate拥有完整的日志系统,mybatis则欠缺一些。

hibernate日志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱很多。

三、        执行性能对比

1.在不考虑缓存的情况下,mybatis执行比hibernate快。

mybatis执行SQL语句,精确度高,hibernate一般都是又hql再生成SQL语句,在复杂查询中,查询次数会增加,查询速度比mybatis慢一点

2.hibernate缓存机制比较完善,mybatis二级缓存机制不佳。

3.hibernate的事务管理机制比较完善,mybatis开发时一般使用spring提供的事务管理器

四、        维护对比

1. Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

2.Hibernate对对象的维护要比MyBatis好,对增删改查的对象的维护要方便。

3.mybatis的SQL语句统一写在XML配置文件中,维护时查找SQL语句方便,对高级的查询维护较方便

五、        总结

hibernate与mybatis各有所长,hibernate功能强大,在映射、缓存、事务管理器、日志管理这几方面比较完善;mybatis轻巧,操作执行速度效率比hibernate快,直接使用SQL语句方便高级查询。

个人建议:查询较少,用hibernate,涉及到查询非常多且复杂的项目用mybatis。