问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请简述MyBatis和Hibernate的区别。

发布网友 发布时间:2022-04-22 22:55

我来回答

3个回答

热心网友 时间:2022-04-08 07:57

答:Hibernate和Mybatis都是orm对象关系映射框架,都是用于将数据持久化的框架技术。
Hiberante较深度的封装了jdbc,对开发者写sql的能力要求的不是那么的高,我们只要通过hql语句操作对象即可完成对数据持久化的操作了。
另外hibernate可移植性好,如一个项目开始使用的是mysql数据库,但是随着业务的发展,现mysql数据库已经无法满足当前的绣球了,现在决定使用Oracle数据库,虽然sql标准定义的数据库间的sql语句差距不大,但是不同的数据库sql标准还是有差距的,那么我们手动修改起来会存在很大的困难,使用hibernate只需改变一下数据库方言即可搞定。用hibernate框架,数据库的移植变的非常方便。
但是hibernate也存在着诸多的不足,比如在实际开发过程中会生成很多不必要的sql语句耗费程序资源,优化起来也不是很方便,且对存储过程支持的也不够太强大。但是针对于hibernate它也提供了一些优化策略,比如说懒加载、缓存、策略模式等都是针对于它的优化方案。
Mybatis 也是对jdbc的封装,但是封装的没有hibernate那么深,我们可以再配置文件中写sql语句,可以根据需求定制sql语句,数据优化起来较hibernate容易很多。
Mybatis要求程序员写sql的能力要相对使用hibernate的开发人员要高的多,且可移植性也不是很好。
涉及到大数据的系统使用Mybatis比较好,因为优化较方便。涉及的数据量不是很大且对优化没有那么高,可以使用hibernate

热心网友 时间:2022-04-08 09:15

首先简单介绍下两者的概念:
hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装。
Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与SQL之间的映射关系。
其次具体从几个方面说一下两者的区别:
1.两者最大的区别:
针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。

针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。
2.开发难度对比
Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大,学习周期较长。

而Mybatis则相对简单一些,并且Mybatis主要依赖于sql的书写,让开发者感觉更熟悉。

3.sql书写比较

Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。不过没有自己的日志统计,所以要借助log4j来记录日志。
Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。不过Hibernate具有自己的日志统计。

4.数据库扩展性比较

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

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

5.缓存机制比较

相同点:Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。
不同点:Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。
MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间*享相同的缓存配置和实例,通过Cache-ref来实现。
两者比较:因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。
而MyBatis在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。

6.总结:

Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。
Hibernate的优势是DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

热心网友 时间:2022-04-08 10:49

1) 对于每个实体,需要写一个接口文件。编码复杂度C(n)=O(n),即会随实体的增长,编码量呈线性增长。当n较大时,会增加许多人力物力消耗。
2) 实体Javabean与DB表的map映射文件太多;或者,实体Javabean文件注解用得太泛滥,太多注解难以记忆,增加开发人员负担。Mybatis中实体对应的mapper文件,代码太多,虽然可以自动生成,但阅读性太差。编写和调试sql语句需要大量时间,降低开发效率。
3) 实体操作默认的条件,一般以id作为条件,但开发时,一般不会提前知道id;若用其它条件作为查询等,需要在接口文件新定义方法。如一个实体有10个字段,2个字段组合一个查询方法,则有 =45个查询方法;若算上3个字段,4个字段的组合,则更多。
4) 接口文件定义好后,若后期发现定义的方法不能满足需求,需要定义新的方法,又要修改接口文件;若是系统已经上线,还要需要重新开发、测试、发布等。
5) 当一个表新增一个字段,删除一个字段,或修改一个字段时,Mybatis需要修改mapper映射文件,几乎其中的每个方法都要修改。修改字段,Mybatis在编译期不能自动发现错误。Hibernate通过xml文件或有注解的Javabean文件,同步DB的表结构时,也不能实现删除和更新。更新时,它是忽略原来的字段,然后新增一个字段,除非删除了表,重新再建一次。要是DB的表已保存了数据,不能删除,还是要手动去更改数据库。
6) Hibernate想让ORM框架做完DB所有的事情,反而使框架变得太复杂,不易于使用。Hibernate的ORM模型不能查询一部分数据,即使用户没有使用到,也会将所有关联的数据都查询出来。
7) Hibernate的概念太复杂,学习成本高,更新会先查询再更新,n+1问题。Mybatis即使进行单表的Suid操作也需要人工写sql或生成sql文件,需要维护的sql太多。
8) 需要写很多的判断字段是否为空(null) ,是否是空字符串的语句;开发人员需要承担太多类似的重复,乏味的编程工作。
---------------------
原文:https://blog.csdn.net/abckingaa/article/details/84557336
版权声明:本文为博主原创文章,转载请附上博文链接!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
成为百度用户,提问题要收费吗? 向百度提问题收费吗?谢谢! 向12398698发短信提问题要钱不 北大总裁班是什么机构 帮忙查一下邮局快递包裹现在到哪里了。KA04747114944 签订征地补偿协议的程序是什么呢 政府征收土地的程序是什么? ...感觉其它片子都比较差。无论是内涵、剧情、做工。希望能找到相同或... 王者荣耀里,韩信那句,破碎的身躯可以修复,友情亦是如此吗是什么意思... 王者荣耀 破碎的身躯可以修复,友情也是如此吗 Mybatis框架,和Hibernate框架的区别是什么? 如何提高企业内控管理? 请大虾指点,hibernate和mybatis有什么区别? 最好分点详细介绍!!!谢谢... 如何加强企业内部管理,建立健全内控制度? hibernetes mybatis 哪个好 如何通过加强内部控制的几点思考 ibatis与hibernate的区别与使用场景 浅谈如何加强内部控制 ibatis 比较起hibernate更垃圾,但为什么还会有这么多人用? ibatis和hibernate的性能比较 如何加强内控管理 Hibernate和iBatis、myBatis的区别? 如何建立与完善企业内控制度,提升企业整体管理水平 Hibernate与iBatis的作用是什么,他们的区别是什么呢? 企业应如何有效进行内部控制? 你觉得IBatis(MyBatis) 和 HIbernate 哪个更好 ibatis与hibernate有什么区别啊? 提高企业内部控制水平的因素有哪些 选用ibatis和hibernate的区别 宠物蜥蜴 吃什么东西? 如何完善企业内部控制以提高经营管理效率 隐形眼镜戴反了会有什么反应或作用?对眼镜会造成伤害吗? 隐形眼镜带反了会怎么样呢? 如果隐形眼镜戴错了正反面? 隐形眼镜戴反了有效果吗?戴反了有什么感觉? 隐形眼镜佩戴该注意什么?不正确佩戴会引发哪些疾病? 隐形眼镜佩戴问题! 隐形眼镜佩戴需要注意什么? 隐形眼镜佩戴后的问题 隐形眼镜带反了会怎么样 隐形眼镜戴反了一天会怎样 怎么确定隐形眼镜带反了且带上了 隐形眼镜戴反了怎么办 怎么确认隐形眼镜戴反了 戴隐形眼镜戴反什么感觉 如果隐形眼镜戴反了会有什么感觉 一个隐形眼镜戴反了,是不是会看不清 隐形眼镜戴反了会怎么样??我不知道我是不是戴反了。 我刚刚配了一副隐形眼镜,以前没戴过,万一左右戴错了怎么办? 在美国买iPad多少钱?