Mybatis和Hibernate的比较

来源:互联网 发布:登录淘宝网网站 编辑:程序博客网 时间:2024/06/06 00:24

两者都是比较流行的ORM框架,前者的着力点在POJO与SQL之间的映射关系,而后者对操作数据库做出了较为完整的封装。

两者最大的区别:

Hibernate:有良好的映射机制,开发者无需关系SQL的生成与结果映射。

Mybatis:需要手动编写SQL语句以及ResultMap。

开发难度对比:

Hibernate:开发难度比Mybatis难度大,主要是因为他比较复杂,庞大,学习时间较长。

Mybatis:相对简单一些。

SQL书写比较:

Mybatis:手动书写,没有自己的日志统计,所以要借助log4j来记录日志。

Hibarnate:具有自己的日志统计,SQL语句也可以自己编写,但是这样就违背的Hibarnate框架的初衷。

缓存机制比较:

相同点:

Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。

不同点:

Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。(hibernate脏读报错

MyBatis使用二级缓存时需要特别小心,如果不能完全确定数据更新操作的范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。(Mybatis脏读不报错

总结:

Mybatis的优势在于他可以进行更细致的SQL优化,可以减少查询字段,并且也比较容易掌握。

Hibernate的优势在于他在DAO层开发比Mybatis简单,他的数据移植性比较好。