• 常用ORM框架:Hibernate与MyBatis


     ✨✨个人主页:沫洺的主页

    📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                               📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                               📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

    💖💖如果文章对你有所帮助请留下三连✨✨

    🎨ORM

    📌ORM(Object-Relationl Mapping),对象关系映射。它的作用是在关系型数据库和对象之间作一个映射。

    📌可以在对象模型和关系型数据库的表之间建立一座桥梁,程序员使用 API 直接操作JavaBean 对象就可以实现数据的存储、查询、更改和删除等操作。

    🎨框架

    📌框架(FrameWork)是一个框子——指其约束性,也是一个架子——指其支撑性。

    • 📍框架是为了解决特定问题而定义的一系列接口和实现类,通过这些类和接口协调来完成一系列的程序实现。
    • 📍有了框架:我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。
    • 📍使用框架:可以保证减少开发时间,降低开发难度,并且还能保证设计质量。

    📌总之

    • 📍框架是一个半成品,已经对基础的代码进行了封装,并提供相应的API,开发者使用框架是直接调用封装好的API可以省去很多代码编写,从而提高工作效率和开发速度.
    • 📍通用开源框架都有 jar 包和 api文档源代码三部分组成.

    🎨常用ORM框架

    ⌛Hibernate

    📌Hibernate是一个全表映射的框架(全自动)。开发者只要定义好持久化对象到数据库表的映射关系,就可以通过 Hibernate 框架提供的方法完成持久层操作。开发者并不需要熟练地掌握 SQL 语句的编写,Hibernate 框架会根据编制的存储逻辑,自动生成对应的 SQL,并调用 JDBC 接口来执行。

    ⌛MyBatis 

    📌MyBatis是一个半自动ORM框架,MyBatis仅有基本的字段映射,仍然需要通过手写SQL来实现和管理。

    📌MyBatis 是一款秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

    ⌛MyBatis与Hibernate的区别

    🎉🎉MyBatis需要手写SQL语句,半自动化ORM,工作量大于Hibernate,为什么比全自动的Hibernate还受欢迎 ?

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

    • 📍生成复杂的sql语句很难实现,或者实现后导致性能丢失。
    • 📍对数据库特定sql优化时,不友好
    • 📍处理复杂的业务数据时,尤其是级联查询的时候,会导致数据查询和加载很慢。

    自身也存在一些缺点导致其只适合在场景不太复杂且对性能要求不高的项目中使用

    📌MyBatis入门简单,上手快。

    • 📍​​​​​​​正是由于半自动化自定义SQL,所以比较灵活,可以更加精确的定义SQL。
    • 📍​​​​​​​SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化
    • 📍​​​​​​​便于程序升级迭代

    同样功能的两条sql语句的性能可能相差十几倍到几十倍,在高并发、快响应要求下的互联网系统中,手写SQL更合适.

    📌总之

    因为MyBatis具有相对轻量级封装少映射多样化支持存储过程、可以进行SQL语句优化等特点,符合互联网高并发、大数据、高性能、高响应的要求,使它取代了Hibernate成为了Java互联网中首选的持久框架。而对于性能要求不高的比如内部管理系统、ERP等可以使用Hibernate.

  • 相关阅读:
    开设自己的网站系类01购买服务器
    大数据技术之Hadoop:使用命令操作HDFS(四)
    全IB学校:果树林学校Aspengrove School
    “语法糖”——我的编程新知
    解决storybook中组件的tailwindcss类不生效问题
    TX2训练yolov4 自己的训练集
    【牛客刷题】链表的奇偶重排
    API性能监控 【ApiHelp】-- 组件Enhance 代码实现 ~ ASM字节码增强
    HTML期末作业:基于html+css+javascript+jquery实现古诗词网页 学生网页设计作品 web前端开发技术 web课程设计 网页规划与设计
    实现分别在Linux、Docker、Kubernetes上安装部署Mysql、Redis、Nginx软件
  • 原文地址:https://blog.csdn.net/HeyVIrBbox/article/details/126976318