简述mybatis框架与hibernate框架的区别_hibernate 性能

简述mybatis框架与hibernate框架的区别_hibernate 性能hibernate与mybatis的区别和特点hibernate是全自动,而mybatis是半自动。hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。hibernate数据库移植性远大于mybatis。hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

hibernate 与mybatis 的区别 和特点

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

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

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

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

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

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

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

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

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

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

总结:

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

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

mybatis:

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

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

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

  4. 二级缓存机制不佳。

hibernate:

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

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

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

举个形象的比喻:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197509.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据分析那点事

    写在前文,首先声明博主对数据分析领域也在不断学习当中,文章中难免可能会出现一些错误,欢迎大家及时指正,博主在此之前也曾对不同量级、不同领域的数据进行过分析,但是在过程中总是感觉有许多困惑,即自己也会问自己?自己分析的是否全面,是否有价值,从哪些方面出发?对于这些问题博主做了思考。归根到底还是在理论上,在阅读了相关的专业书籍和材料的基础上总结出本文,希望能给大家带来收获,同时由于内容过多,计划分三次完成全部内容,同时如果大家感觉对自己有帮助的话,记得收藏,博主会不断完善本文的缺陷和不足,希望真正能给大家带来收

    2022年4月8日
    50
  • 高通MSM8953 LK阶段配置使用I2C8[通俗易懂]

    高通MSM8953 LK阶段配置使用I2C8[通俗易懂]项目场景: 因为项目需要,需要在高通MSM8953平台的LK阶段使用I2C8设备。但是MSM8953平台LK阶段并没有配置好I2C8接口,因此调试I2C8成为当务之急。本文只介绍在LK阶段配置使用I2C5的方法。调试需要:1、文档:BAMLow-SpeedPeripherals(BLSP)UserGuide查看文档,有I2C介绍如下:I2c3对应的物理地址为0x78B7000,中断IRQ:97,时钟信号clk:clk_gcc_blsp1_qup3_i2c_apps_clk

    2022年10月19日
    4
  • journalctl日志管理

    journalctl日志管理Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。journalctl功能强大,用法非常多。#查看所有日志(默认情况下,只保存本次启动的日志)$sudojournalctl#查看内核日志(不显示应用日志)$sudojournalctl-k#查看系统本次启动的日志$sudojournalctl-b

    2022年5月23日
    37
  • 并查集union操作_数据库递归查询语句

    并查集union操作_数据库递归查询语句本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms 一书的Section1.5,实际上本文也就是基于它的一篇读后感吧。原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。

    2025年8月7日
    5
  • Instruments10 分析某个类中方法的执行时间

    Instruments10 分析某个类中方法的执行时间

    2022年3月7日
    46
  • cloudsim仿真平台扩展的例子_云平台虚拟化技术

    cloudsim仿真平台扩展的例子_云平台虚拟化技术http://1.johnhome.sinaapp.com/?p=257幻灯片1云计算仿真框架CloudSim介绍jiangzw#ihep.ac.cn(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)本文基于 署名3.0中国大陆 许可协议发布,未经本人许可不得转载

    2022年10月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号