百科狗-知识改变命运!
--

“mybatis”和“hibernate”的区别是什么?

百变鹏仔1年前 (2023-12-22)阅读数 6#综合百科
文章标签数据库酱油

mybatis与hibernate一样是个orm数据库框架。它与hibernate区别是非常大的,有以下几点:

总结起来:

mybatis:小巧、方便、高效、简单、直接、半自动

hibernate:强大、方便、高效、复杂、绕弯子、全自动

1. hibernate是全自动,而mybatis是半自动。

hibernate完全可以自动生成sql。而mybatis仅有基本的字段映射,仍然需要通过手写sql来实现和管理。

2. hibernate数据库移植性远大于mybatis。

hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,移植性也会随之降低很多,成本很高。

3. hibernate拥有完整的日志系统,mybatis则欠缺一些。

hibernate日志系统非常健全,涉及广泛,而mybatis则除了基本记录功能外,功能薄弱很多。

“mybatis”和“hibernate”的区别是什么?

4. mybatis相比hibernate需要关心很多细节

hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。

5. sql直接优化上,mybatis要比hibernate方便很多

由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;总之写sql的灵活度上hibernate不及mybatis。

mybatis:

1. 入门简单,即学即用,提供了数据库查询的自动对象绑定功能。

2. 可以进行更为细致的SQL优化,可以减少查询字段。

3. 缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

4.二级缓存机制不佳。

hibernate:

1. 功能强大,数据库无关性好,O/R映射能力强。

2. 有更好的二级缓存机制,可以使用第三方缓存。

3. 缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。

举个形象的比喻:

mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作

hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。

jdbc和hibernate的区别

我的理解是jdbc(Java Database Connectivity)是一套通用的接口API定义,也就是说它规定了我们对数据库进行select、insert等操作的时候应该调用哪个api。但是针对不同的特定数据库,需要具体去实现这套接口从而和具体的数据库系统对接(mysql,orcle等等),而这些针对具体数据库的jdbc接口实现就是某种特定数据库的jdbc驱动。

至于Hibernate,它实际上底下仍然是使用jdbc的api,通过各种sql语句进行数据库操作。比如你让一个类的对象存到数据库中,实际上hibernate底下还是用了insert语句,只是它包装的让你看不到实际的sql语句操作而已。而这个时候,因为hibernate只是面向jdbc的api进行编写的,至于怎么让jdbc的api能够实际的对某种数据库进行操作,就需要jdbc的驱动了。

简单说,就是hibernate底下是直接使用jdbc的api接口进行的编程,然后操作具体的某种数据库时候,jdbc的api接口需要针对这个具体数据库系统的实现,即特定的jdbc驱动了。

Hibernate的底层还是jdbc,只不过额外封装了很多东西而已。。例如事务,SessionFacotory等等..给你举个例子,你需要买一瓶酱油。你直接跑到酱油工厂里去拿了一瓶,因为你需要酱油,所以你去拿。而Hibernate的作用就是超市,你需要酱油的时候直接去超市里买,而不是直接去工厂..超市的将有卖完了,它自己就去工厂里进货,至于如何进货,你完全不用关心,只需要配置好各种配置文件就ok。 我知道你又会有疑问了。。当超市的货物不能满足你的时候,就比如说你需要一架飞机,当时超市没有卖。这个时候Hibernate也提供了hql和sql,让你直接去工厂里提货。。 超市里还有包换,这个就是事务了。。你需要买一瓶酱油一瓶醋,你总不能买瓶酱油回家 然后再来超市买醋吧。。事实上你是买了酱油然后再买瓶醋然后一起回家。;这个就类似与Hibernate的transaction了。。 亲,你学到了没。。哥打了这么久的字。。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)