Mybatis 与 Hibernate

相同点:

(1)、Mytatis 与Hibernate 都是通过SessionFactoryBuider 由XML配置文件生成SessionFactory、并由SessionFactory 生成

        Session, 之后由Session来开启执行事务和SQL语句。

(2)、Mybatis 和Hibernate 都封装了JDBC和JTA (即java数据库连接 和应用程序编程接口)。

(3)、两者都是基于ORM(即对象关系影射 )的思想解决了模型和数据库之间的应射问题。

 

不同点:

(1)、sql 方面   Mybatis 通过Mapper.xml  维护映射结果,手动编写SQL 比 Hibernate 自动生成的 hql 更加灵活,使得项目维护 更加方便,  Mybatis 的SQL调优更加容易。  Hibernate 的hql 的数据库移植性更好。hibernate 在级联删除的时候效率低,数据量大或者表多的时候 ,基于关系操作会变得复杂。

(2)、缓存方便,两者都可以使用第三方缓存来节省数据库资源,Hibernate 相比 Mybatis 有更好的二级缓存机制。

--------------------------------------2019-2-1完善内容------------------------------------------------------------------------------------

 两者都作为WEB项目的持久层,其实并没有绝对的论证Hibernate 和My Batis 谁好谁次,这里小伙伴门注意了,有的面试官若要问谁好谁次,要不就是故意误导你,要不就是这方面的菜鸟强装大神,一定要怼回去。任性归任性,还是要认真的做一下对比以便能加深对两者的理解。

第一方面:对开发速度的对比。

就开发而言,Hibernate要比My Batis 入门要来的难度大。My  Batis 相比要更加轻量。要用好My Batis 首先要理解Hibernate。

比起两者的开发速度,不仅仅要考虑到两者的特性和性能,更要根据项目的实际开发需求去选择。比如一个项目涉及的复杂查询没有的话,只有简单的增删改查,这样选择Hibernate就比较快了,因为基本的sql 语句都已经封装好了,不需要自己去写sql,时间会节省很多。相反,如果如果设计的复杂查询太多,就适用选择My Batis ,Hibernate的sql 语句管理比较方便。

第二方面:开发工作量的对比

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

第三方面:sql 优化方面

        Hibernate 查询数据时会将表中所有字段查询出来,会造成一定资源的浪费,影响查询效率。虽然也可以使用自己的sql 来查询相关需要查询的字段,但是这样就破坏了Hibernate  开发的简洁性。而My  Batis  是手动编写sql  ,可以灵活的按需编写查询SQL。

参考资料;https://www.cnblogs.com/inspurhaitian/p/4647485.html

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MybatisHibernate都是Java持久化框架,它们的作用都是将Java对象映射到数据库中的表,从而实现对数据库的操作。但是它们的实现方式和特点有所不同。 1. 映射方式 Mybatis采用的是基于XML或注解的SQL映射方式,开发人员需要手动编写SQL语句,并将Java对象的属性映射到SQL语句中,从而实现对数据库的操作。 Hibernate则采用的是基于ORM(Object-Relational Mapping)的映射方式,它可以将Java对象与数据库表中的记录进行映射,不需要手动编写SQL语句,开发人员只需要在Java对象中定义好属性和关系即可。 2. 性能 Mybatis相对于Hibernate来说更加轻量级,因为它只需要编写简单的SQL语句即可完成对数据库的操作,不需要进行复杂的对象关系映射。因此,Mybatis的性能比Hibernate更快。 但是,Hibernate的ORM映射方式可以提高开发效率,减少代码量,同时也可以实现缓存和查询优化等功能,因此在某些场景下,Hibernate的性能可能更好。 3. 灵活性 Mybatis相对于Hibernate来说更加灵活,它允许开发人员自定义SQL语句,可以实现更加复杂的查询操作。而Hibernate则对SQL语句有一定的限制,因为它需要根据Java对象的属性和关系来生成SQL语句。 4. 学习难度 Mybatis相对于Hibernate来说学习难度较低,因为它的映射方式比较简单,开发人员只需要掌握SQL语句的编写和Java对象属性的映射即可。而Hibernate需要开发人员掌握一定的ORM知识和查询优化等技巧。 总的来说,MybatisHibernate各有优缺点,选择哪种框架要根据具体情况而定,如果对性能要求比较高,可以选择Mybatis,如果对开发效率和代码量要求比较高,可以选择Hibernate
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值