Hibernate与MyBatis区别


1.开发速度

        就开发速度而言,Hibernate的真正掌握要比MyBaits难一些。MyBatis框架相对简单容易上手,但相对简陋。

        比起两者的开发速度,不仅仅要考虑两者的特性和性能,更要根据需求去考虑究竟哪一个更适合项目开发,比如:一个项目中用到复杂查询基本没有,就是简单的增删改查,那么选择Hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要手动去写sql语句,节省大量时间;但相对于一个大型项目,复杂的语句比较多,再去选择Hibernate就不是很好的选择,Mybatis则更适合,而且sql语句的管理也更方便。

2.开发工作量

        Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap,而Hibernate有良好的映射机制,开发者无需关系SQL的生成与结果映射,可以更专注于业务流程。

3.sql优化

        Hibernate的查询会将表中的所有字段都查询出来,会有性能消耗,Hibernate也可以自己写SQL来指定需要查询的字段,但这样破坏了Hibernate开发的简洁性。而Mybaits的SQL是手动编写的,可以按需求指定查询的字段。

        Hibernate HQL语句的调优需要将SQL打印出来,而Hibernate的SQL被很多人嫌弃太过丑陋。Mybatis的SQL是自己手动写的可以方便调整。

        Hibernate具有自己的日志统计,Mybatis本身不带日志统计,使用Log4j进行日志记录。

4.对象管理

        Hibernate是完整的对象/关系映射解决方案,完全使用面向对象的视角来持久化Java应用中的数据。只需要关注对象的状态,不必考虑SQL语句的执行,SQL部分已经由Hibernate掌管妥当,只有开发者在进行系统性能调优的时候才需要进行了解。

        而Mybatis需要用户对对象自己进行详细的管理。

5.缓存机制

       Hibernate:一级缓存、二级缓存

Mybatis优势:

        1.更为细致的SQL优化,可以减少字段查询

        2.Mybatis更好掌握,Hibernate门槛相对较高

Hibernate优势:

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

        2.Hibernate对对象的维护和缓存要比Mybatis好,对增删改查的对象的维护要方便。

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

        4.Hibernate有更好的二级缓存机制,可以使用第三方缓存,Mybatis本身提供的缓存机制不佳。

       来自:https://mp.weixin.qq.com/s/BLaHSlNcctvVdHttD3riDQ 

你可能感兴趣的:(SSH)