hibernate和mybatisplus区别_hibernate3

hibernate和mybatisplus区别_hibernate3hibernate和mybatis区别对比

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

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

  • hibernate:全自动映射 ORM框架,不需要自己手动去写SQL语句

  • mybatis:半自动ORM框架,需要自己手动去写SQL语句

  • hibernate以及mybatis区别

    • 开发速度

    • 工作量对比: 针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。

    • sql优化方面

      • hibernate :查询语句会将所有字段都打印出来,会有一点点性能消耗,

      • mybatis:可以根据需求去查询需要的字段

      • Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录。

    • 缓存机制

      • Hibernate

        • Hibernate一级缓存是Session缓存,利用好一级缓存就需要对Session的生命周期进行管理好。一级缓存需要对Session进行严格管理。

        • Hibernate二级缓存是SessionFactory级的缓存, 二级缓存称为进程级缓存或SessionFactory级缓存,它可以被所有session共享,它的生命周期伴随着SessionFactory的生命周期存在和消亡。

        • hibernate的二级缓存默认是不支持分布式缓存的。

        • 总结:一级缓存就是  Session 级别的缓存,在事务范围内有效是,内置的不能被卸载。二级缓存是 SesionFactory级别的缓存,从应用启动到应用结束有效。是可选的,默认没有二级缓存,需要手动开启

      • mybatis

        • 一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。

        • 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/> ;

        • 对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存Namespaces)的进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

  • 总结

    • Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。

    • Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套sql映射文件,工作量大。 

    • Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。 

  • Mybatis优势

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

    • MyBatis容易掌握,而Hibernate门槛较高。

  • Hibernate优势

    • Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

    • Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

    • Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

    • Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

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

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

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


相关推荐

  • 使用Servlet遇到的问题Caused by: java.lang.IllegalArgumentException: servlet映射中的<url pattern>[servlet]无效

    使用Servlet遇到的问题Caused by: java.lang.IllegalArgumentException: servlet映射中的<url pattern>[servlet]无效Causedby java lang IllegalArgum servlet 映射中的 urlpattern servlet 无效报这个错是因为 web xml 中的 url 写的路径不对 应该在 servlet 前面加一个 urlpattern

    2025年10月8日
    3
  • C++ struct 初始化与赋值

    C++ struct 初始化与赋值1.CC++结构体的初始化今天看到项目中对自定义结构体初始化方式有点陌生,特在此罗列一下可用的结构体初始化的方式。对结构体structA{intb;intc;}有几种初始化方式:第一种:structAa={.b=1,.c=2};第二种:structAa={b:1,c:2};第三种:structAa1=…………

    2022年7月11日
    21
  • 5分钟搞懂MySQL – 行转列

    5分钟搞懂MySQL – 行转列  MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰到了你,让你为之一愣~但当你看到本文后,这个问题就不在是问题,及时收藏,以后谁再问你这个问题,直接甩他脸上,粘贴即用。

    2022年5月1日
    40
  • 在Linux系统中安装pycharm详解

    在Linux系统中安装pycharm详解1 在官网下载 pycharm 安装包 1 1 进入官网 DownloadPyCh PythonIDEfor 选择 Professional 专业版 直接下载 自己可以选择 pycharm 的不同版本 1 2 进入跳转页面后 出现提示框 点 savefile 1 3 下载完成后 打开安装包下载的位置 2 安装 pycharm2 1 解压文件 2 打开终端 进入 pych

    2025年6月20日
    2
  • request对象常用方法总结

    request对象常用方法总结JSP内置对象:request对象  客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法如下:常用方法方法介绍StringgetParameter(Stringname)返回name指定参数的参数值Str

    2022年4月30日
    69
  • 阿里云服务器搭建及项目部署过程—小白篇

    阿里云服务器搭建及项目部署过程—小白篇最近学习了前后端的相关技术,就想租一个服务器试一下,玩一玩,简单了解了一下阿里云的服务器,简单介绍一下:一:什么是云服务器ECS是阿里云产品体系中,最基础的计算服务,通常用作应用程序的运行环境,最重要的特点是弹性。二:基础运行环境用户的应用程序运行在实例的操作系统上三:特点弹性:容量不够可以直接在云服务器上扩展配置,只要直接补差价成本:0运维,支持包年包月或按量计费…

    2022年6月23日
    45

发表回复

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

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