• 技术文章 >java >java基础

    java中mybatis和hibernate的总结

    小妮浅浅小妮浅浅2021-01-19 11:00:41原创3148

    在项目开发上,hibernate提供的经验简化了不少工作量和兼容性,但这些绝对需要有经验后才能明白,对于新手来说使用起来很困难。hibernate比mybatis掌握难度要高一些,对sql的控制弱一些。下面我们就三个方面带来mybatis和hibernate的总结分析,一起来看看二者的比较吧。

    1.开发效率

    如果是做一些简单的CMS类似的只有简单的增删改查的项目,那么使用Hibernate更有优势,不需要掌握太多的Hibernate知识,只需要会一些基本的查询和一些配置(Hibernate真正要学会,个人感觉知识量比mybatis大很多)。hiberbate是用java对象拼sql,mybatis是直接写原生sql。hibernate提供了很好的映射机制,mybatis还需要自己写resultmap paramMap这些东西。Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。综上所述,那么从开发效率上来讲,Hibernate> mybatis。

    2.可维护性

    hiberbate是用java对象拼sql,mybatis是直接写原生sql。直接写SQL更容易维护,而前者需要通过java对象来看SQL,你得把sql,用System.out.println(sql);把SQL打印出来,才可以看到。Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。而Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。Hibernate HQL语句的调优需要将SQL打印出来,而Hibernate的SQL被很多人嫌弃因为太丑了。MyBatis的SQL是自己手动写的所以调整方便。但Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录。

    3.性能

    两者都提供了缓存,session机制。小项目两者差不多吧.大型项目mybatis>hibernate。

    4.常见面试题

    什么样的情况下,Hibernate 会慢MyBatis10倍?

    Hibernate用错了的情况下,会出现:P

    比如, Hibernate的对象A里的内嵌对象B加载被你从默认懒加载改为预加载(假设你没有搞懂影响,就改动了配置), 你要查询对象A的列表,就会出现N+1查询, 但你的大部分业务逻辑又不需要读取内嵌对象B,性能就会很差。

    而一般情况下MyBatis, 这种查询是需要手写的。 出现这种情况的概率较小。

    以上就是java中mybatis和hibernate的总结分析,总的来说hibernate不够灵活,封装的太深了,而mybatis可以随心所欲的配置想要的操作,大家可以根据自身的能力和使用进行挑选。

    专题推荐:java mybatis,hibernate
    上一篇:Java Vector和ArrayList的异同分析 下一篇:分页处理java多线程的数据

    相关文章推荐

    • Java中char字节的占用分析• java中int使用十六进制• CompletableFuture在java中的报错处理• java之json串转Map的整理• Java Vector和ArrayList的异同分析

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网