zoukankan      html  css  js  c++  java
  • hibernate和mybatis的区别

    hibernate和mybatis的区别

     

      一、两者最大的区别

      针对简单逻辑,Hibernate与MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。

      针对高级查询,MyBatis需要手动编写SQL语句,以及ResultMap,而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于流程。

      二、开发难度对比

      Hibernate的开发难度大于MyBatis,主要由于Hibernate比较复杂,庞大,学习周期比较长。

      MyBatis则相对简单,并且MyBatis主要依赖于生气了的书写,让开发者刚进更熟悉。

      三、sql书写比较

      Hibernate也可以自己写sql来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性,不过Hibernate具有自己的日志统计。

      MyBatis的sql是手动编写的,所以可以按照要求指定查询的字段,不过没有自己的日志统计,所以要借助Log4j来记录日志。

    四、数据库扩展性计较

      Hibernate与数据库具体的关联在XML中,所以HQL对具体是用什么数据库并不是很关心

      MyBatis由于所有sql都是依赖数据库书写的,所以扩展性、迁移性比较差。

     五、缓存机制比较

      Hibernate的二级缓存配置在SessionFactory生成配置文件中进行详细配置,然后再在具体的表对象映射中配置那种缓存。

      MyBatis的二级缓存配置都是在每个具体的表对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓冲机制,并且MyBatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。

        两者比较,因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL,所以在使用二级缓存时如果出现脏数据,系统会报出错误提示。 而MyBatis在这一方面使用二级缓存时需要特别小心,如果不能完全去顶数据更新操作的波及范围,避免cache的盲目使用,否则,脏数据的出现会给系统的正常运行带来很大的隐患。

    Hibernate:hibernate是一个标准的ORM框架,不需要写sql语句,维护关系比较复杂,sql语句自动生成,对sql语句优化,修改比较困难。

    Hibernate的优缺点:

    优点:面向对象开发,不需要自己写sql语句。如果进行数据库迁移不需要修改sql语句,只需要修改一下方言。

    缺点:hibernate维护数据表关系比较复杂。完全是有hibernate来管理数据表的关系,对于我们来说完全是透明的,不易维护。

    Hibernate自动生成sql语句,生成sql语句比较复杂,比较难挑错。

    Hibernate由于是面向对象开发,不能开发比较复杂的业务。

    应用场景:

    适合需求变化较少的项目,比如ERP,CRM等等

    Mybatis框架对jdbc框架进行封装,屏蔽了jdbc的缺点,开发简单。

    Mybatis只需要程序员关注sql本身,不需要过多的关注业务。对sql的优化,修改比较容易

    适应场景:

    适合需求变化多端的项目,比如:互联网项目

    mybatis与hibernate重要区别

    企业开发进行技术选型 ,考虑mybatis与hibernate适用场景。

    mybatis:入门简单,程序容易上手开发,节省开发成本 。mybatis需要程序员自己编写sql语句,是一个不完全 的ORM框架,对sql修改和优化非常容易实现 。

    mybatis适合开发需求变更频繁的系统,比如:互联网项目。

    hibernate:入门门槛高,如果用hibernate写出高性能的程序不容易实现。hibernate不用写sql语句,是一个 ORM框架。

    hibernate适合需求固定,对象数据模型稳定,中小型项目,比如:企业OA系统

  • 相关阅读:
    intel 1211网卡驱动
    winform 右侧关闭按钮事件
    base64 教程
    js 预览图片 转base64
    docker常用命令
    docker安装
    jenkins集成sonar
    jenkins自动打包部署linux
    mac生成ssh公私匙
    jenkins统计单元测试的覆盖率
  • 原文地址:https://www.cnblogs.com/huhewei/p/14244812.html
Copyright © 2011-2022 走看看