广告
返回顶部
首页 > 资讯 > 精选 >Mybatis与Hibernate的区别是什么
  • 239
分享到

Mybatis与Hibernate的区别是什么

mybatishibernate 2023-05-30 23:05:51 239人浏览 泡泡鱼
摘要

mybatis与Hibernate的区别是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. hibernate是全自动,而mybatis是半自动hibernate完全可以

mybatis与Hibernate的区别是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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

hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。

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

hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oraclemysql等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。

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

hibernate日志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱很多。

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

hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,因此很容易上手并开发项目,但忽略细节会导致项目前期bug较多,因而开发出相对稳定的软件很慢,而开发出软件却很快。hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。

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

由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;虽有hql,但功能还是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql,但开发模式上却与ORM不同,需要转换思维,因此使用上不是非常方便。总之写sql的灵活度上hibernate不及mybatis。

随着使用情况的不断增多,我又做了进一步的总结总结:

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

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

mybatis:

入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。

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

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

二级缓存机制不佳。

hibernate:

功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。

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

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

举个形象的比喻:

mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。

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

看完上述内容,你们掌握Mybatis与Hibernate的区别是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Mybatis与Hibernate的区别是什么

本文链接: https://www.lsjlt.com/news/222108.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis与Hibernate的区别是什么
    Mybatis与Hibernate的区别是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. hibernate是全自动,而mybatis是半自动hibernate完全可以...
    99+
    2023-05-30
    mybatis hibernate
  • hibernate与mybatis的区别是什么
    这期内容当中小编将会给大家带来有关hibernate与mybatis的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Hibernate 是当前最流行的O/R mapping框架,它出身...
    99+
    2023-05-31
    hibernate mybatis 别是
  • Hibernate和MyBatis的区别是什么
    这篇文章给大家分享的是有关Hibernate和MyBatis的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hibernate 和 MyBatis 的区别相同点都是对j...
    99+
    2022-10-19
  • jpa和hibernate的区别是什么
    JPA(Java Persistence API)是Java EE平台的一部分,是一种定义了对象-关系映射(ORM)规范的API。而...
    99+
    2023-08-14
    jpa hibernate
  • hibernate属性的inverse与cascade有什么联系与区别
    这篇文章主要介绍了hibernate属性的inverse与cascade有什么联系与区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。    1、到底在哪...
    99+
    2023-06-03
  • Mybatis中#和$的区别是什么
    这篇文章主要介绍“Mybatis中#和$的区别是什么”,在日常操作中,相信很多人在Mybatis中#和$的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis中#和$的区别是什么”的疑惑有所...
    99+
    2023-06-22
  • mybatis 中 #与$ 的区别?
    #表示的是使用了预编译,可以防止sql注入。而$则不是。使用#将传入的参数默认为字符串。而$则不会,传入的是什么就是什么。$一般用于传入数据库对象,例如表名。如果传入的是Date类型,则要用#。ps:在使用...
    99+
    2022-10-18
  • MyBatis ofType和javaType的区别是什么
    这篇文章主要介绍了MyBatis ofType和javaType的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis ofType和javaType的区别是什么文章都会有...
    99+
    2023-06-29
  • MyBatis中的#{}和${}有什么区别
    这篇文章主要介绍了MyBatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言在MyBatis 的映射配置文件中,动态传递参数有两种方式:#{...
    99+
    2023-06-21
  • JSF与Struts的区别是什么
    本篇内容介绍了“JSF与Struts的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JSF与Struts的异同  Struts和J...
    99+
    2023-06-03
  • tf.nn.conv2d与tf.layers.conv2d的区别是什么
    这篇文章主要讲解了“tf.nn.conv2d与tf.layers.conv2d的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“tf.nn.conv2d与tf.layers.conv...
    99+
    2023-07-05
  • string与stringbuilder的区别是什么
    string是不可变的字符串,而stringbuilder是可变的字符串。在使用string时,每次对字符串的修改都会创建一个新的字...
    99+
    2023-08-15
    string stringbuilder
  • web与php的区别是什么
    本教程操作环境:windows10系统、PHP7.1版,DELL G3电脑。web与php的区别是什么一个后端,一个前端,这就是最大区别。详细点的话,可以这么说:功能不一样,php主要用于后端处理数据和操作数据,增删改查。而web前端所包括...
    99+
    2016-02-02
    PHP
  • php7与php5的区别是什么
    本文操作环境:windows10系统、php 7&&php 5、thinkpad t480电脑。相信一定有很多小伙伴都有过这样的疑惑,php5和php7之间有什么区别么?php7想对于php5增加或删除了哪些东西?下面我就来...
    99+
    2020-09-07
    php 7 php 5 区别
  • html与java的区别是什么?
    html与java的区别两者本质不一样。Java是一种面向对象编程语言,像C、Basic一样,但各有各的特点。java是一门程序语言,具有众多优点,它是可以编写网页的;但那个语言叫JSP,JSP语言是JAVA程序语言的一种技术。【推荐学习:...
    99+
    2014-10-09
    java基础 html java
  • wordpress与PHP的区别是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑wordpress是什么WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPres...
    99+
    2020-08-18
    wordpress PHP
  • php与ruby的区别是什么
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php与ruby的区别是什么Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。php和ruby...
    99+
    2021-05-03
    php
  • php与vb的区别是什么
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php与vb的区别是什么PHP即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。Visual Basic(简称VB)是Micr...
    99+
    2017-05-19
    PHP
  • access与mysql的区别是什么
    这篇文章主要介绍了access与mysql的区别是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。access与mysql的区别:(1)Mys...
    99+
    2022-10-18
  • SQL与PLSQL的区别是什么
    这篇文章主要介绍SQL与PLSQL的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!结构化查询语言(SQL)是一种标准的数据库语言,用于创建,维护和检索关系数据库。SQL的优...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作