Hibernate的优点:
1、hibernate是全自动的,hibernate完全可以通过对象关系模型实现对数据库的操作,具有完整的JavaBean对象和数据库映射结构自动生成sql。
2、功能强大,数据库相关性好,O/R映射能力强,需要写的代码少,开发速度快。
3、有更好的辅助缓存机制可以使用第三方缓存。
4、数据库可移植性良好。
5、hibernate具有完整的日志系统,hibernate日志系统非常健全,涉及sql记录、关系异常、优化告警、缓存提示、脏数据告警等广泛
Hibernate的缺点:
1、学习门槛高,精通门槛更高,程序员如何设计O/R映射,如何在性能和对象模型之间取得平衡,以及如何很好地使用Hibernate所需的经验和能力强
2、hibernate的许多sql是自动生成的,虽然有些hql查询无法直接维护sql,但功能并不像sql那么强大。 当您查看报告等变态需求时,hql查询将变得空虚。 这意味着hql查询是有限的。 hibernate还支持本机sql查询,但它很难使用,因为开发模式与orm不同,需要切换思维。 总之,在编写sql的灵活性上hibernate比不上mybatis。
Mybatis的优点:
1、使用方便,易于掌握,提供数据库查询的自动对象绑定功能,且持续良好的SQL使用经验,对于没有很高对象模型要求的项目来说,是相当完美的。
2、sql写在xml中,便于统一管理和优化,解除sql和程序代码的结合。
3、提供映射标签,支持对象与数据库orm字段的关系映射
4、提供对象关系映射标签,支持对象关系构建维护
5、提供支持动态sql创建的xml标记。
6、Hibernate速度快
Mybatis的缺点:
1、相关表多、字段多时,sql工作量大。
2、sql依赖数据库,数据库可移植性差。
3、由于xml中标记id必须是唯一的,因此DAO不支持方法重载。
4、对象关系映射标签和字段映射标签只是映射关系的描述,具体实现仍依赖于sql。
5、DAO层过于简单,对象组装工作量大。
6、不支持级联更新、级联删除。
7、Mybatis日志除基本记录功能外功能相当弱。
8、写动态sql时,调试不方便,尤其是逻辑复杂时。
9 .写动态sql的xml标签功能简单,写动态sql仍然受到限制,可读性很低。
摘自:https://www.cn blogs.com/Java catalina/p/6590321.html