第六课:ORM 是什么?——从 JDBC 到 MyBatis / JPA 的一次认知升级

很多人学后端,会把 MyBatis / JPA 当成“查数据库的工具”。
但真正做过系统的人都会发现:
👉 数据库访问,从来不是“查数据”,而是一整套对象持久化体系

这一篇不讲 API、不讲配置、不写教程。
只做一件事:给后端的数据访问层,立一张清晰的世界观地图。

一、没有 ORM 的时代:人肉对象序列化

在最早期 Java 后端中,程序员是直接通过 JDBC 与数据库交互的:

  • 直连数据库驱动
  • 手写 SQL
  • 手动绑定参数
  • 手动从 ResultSet 取值
  • 手动 new 对象、set 属性
  • 手动控制事务和连接

本质上,每一行代码都在干同一件事:

👉 把“数据库中的一行数据”,翻译成“内存中的一个对象”
👉 把“内存中的一个对象”,拆成“数据库中的一行数据”

这其实就是最原始的人肉版:

对象 ↔ 数据 的序列化 / 反序列化

问题也很快暴露:

  • 大量重复劳动
  • SQL 零散不可控
  • 映射容易出错
  • 事务与异常极难规范

👉 ORM 一定会出现,不是因为“想偷懒”,而是因为系统规模不允许继续手工持久化对象。

二、ORM 的本质:数据库版“序列化系统”

ORM 全称:

Object Relational Mapping(对象关系映射)

如果只从字面理解,很容易低估它。

从工程视角看,ORM 的本质是:

👉 一套“面向数据库的序列化系统 + 对象管理运行时”。

就像 JSON 框架负责:

  • Java 对象 ↔ JSON 文本

ORM 负责:

  • Java 对象 ↔ 数据库表 / 行

它解决的不是“查数据”,而是:

  • 类 ↔ 表
  • 字段 ↔ 列
  • 对象引用 ↔ 外键
  • 对象集合 ↔ 多表结构
  • 对象变化 ↔ SQL 操作

以及更深层的问题:

  • 什么时候发 SQL
  • 修改对象,如何自动更新
  • 同一个对象如何保持一致
  • 事务中对象如何被管理

👉 从这一刻开始,应该把 ORM 看成:
“对象持久化运行时”,而不是“工具库”。

三、第一条路线:MyBatis ——SQL 工程化路线

MyBatis 的定位非常清晰:

👉SQL 工程化框架(SQL Mapper),而不是完整 ORM。

在 MyBatis 中:

  • SQL 是中心
  • 框架负责 JDBC 封装
  • 负责参数绑定、结果映射、动态 SQL
  • 不接管对象生命周期

它的核心价值是:

  • 把 JDBC 标准化
  • 把 SQL 管理工程化
  • 把对象映射自动化

但有一个重要前提:

👉MyBatis 极度依赖开发者的数据库能力。

因为:

  • SQL 怎么写
  • 走不走索引
  • Join 怎么设计
  • 性能怎么调
  • 锁与事务怎么控

全部在开发者手里。

所以 MyBatis 更像:

数据库工程路线

它适合:

  • 对数据库性能高度敏感的系统
  • 报表 / 统计 / 大查询
  • 核心交易与底层系统
  • 有较强数据库工程能力的团队

四、第二条路线:JPA / Hibernate ——对象持久化运行时路线

JPA(Hibernate)走的是完全不同的一条路。

它的目标不是“把 SQL 写好”,而是:

👉让程序员只操作对象。

在 JPA 中,开发者面对的是:

user.setName("Tom");

而不是:

update user set name = 'Tom' where id = 1

JPA 在背后引入了一整套运行时机制:

  • 持久化上下文(一级缓存)
  • 实体状态机
  • 自动脏检查
  • 延迟加载
  • 级联与关系管理
  • 自动 flush

这意味着:

  • JPA 封装的不只是 JDBC
  • 而是“对象如何存在于数据库中”的完整体系

👉 它更像一个:
数据库版的对象运行时系统。

也正因为如此:

  • 封装更多
  • 学习成本更高
  • 行为不直观
  • 但更不容易写错系统

它非常适合:

  • 常规业务系统
  • 一般复杂项目
  • 以领域建模为核心的系统
  • 强一致性场景

五、两条路线的本质差异

很多争论,来自一个错误前提:

❌ 谁更高级
❌ 谁更适合大厂

真正的区别是:系统哲学不同。

维度MyBatisJPA
控制中心SQL对象
依赖能力数据库能力建模与框架理解
封装层级JDBC 层对象运行时
出错概率高(人为)低(框架兜底)
核心优势性能可控一致性与效率
常见场景核心/复杂查询普通/业务系统

一句话总结:

MyBatis 更像“数据库工程”,
JPA 更像“业务建模系统”。

六、后端持久化体系全景图

从架构角度,后端数据层应当这样理解:

业务对象(User / Order / Account) ↓ Repository / DAO 抽象层 ↓ ORM / Mapper 框架(JPA / MyBatis) ↓ JDBC(数据库访问规范) ↓ MySQL(存储引擎 / 事务引擎) ↓ 磁盘

这里:

  • MySQL 负责:存储、索引、事务、执行
  • JDBC 负责:连接与协议
  • ORM 负责:翻译与对象管理
  • Repository 负责:业务语义边界

👉 ORM 永远是基础设施层,而不是业务层。

七、本课真正要建立的认知

这一篇,你不需要记 API,但必须形成几个判断:

  1. ORM 是对象持久化体系
  2. MyBatis 是 SQL 路线
  3. JPA 是对象运行时路线
  4. MyBatis 放大数据库能力,也放大风险
  5. JPA 封装复杂度,也隐藏复杂度

你以后遇到的:

  • Redis
  • ES
  • MQ
  • 分库分表

本质上都是:

👉对象如何跨介质存在的问题。

八、第六课系列结构预告

这一篇是“地图”。

后面的子篇将逐个拆解:

  • 6.1 从 JDBC 到 MyBatis:SQL 工程化是如何发生的?

  • 6.2 JPA 的核心到底是什么?——Persistence Context 与对象状态机

  • 6.3 ORM 为什么一定会有坑?——从 N+1 到事务错觉

  • 6.4 企业真实选型:MyBatis / JPA / 混合架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1200286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 新声明式 HTTP 客户端:HTTP Interface + RestClient,把“调用外部 API”写成接口

1. 核心概念:HTTP Service Clients(HTTP Interface) 它的本质是两件事:(Home) 用接口定义“我要调用的 HTTP API”(方法上标注 GetExchange 等)用 HttpServiceProxyFactory 基于底层 HTTP 客户端&#xf…

java_ssm10二手汽车销售系统n7v1m

目录 具体实现截图系统概述技术架构核心功能模块系统特色应用价值 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 系统概述 Java_SSM10二手汽车销售系统是基于SSM(SpringSpringMVC…

2026全国靠谱拍摄剪辑培训机构哪个比较好

作为一个从零基础转行做短视频行业的过来人,真的太懂大家想学拍摄剪辑,却被五花八门的教学机构搞懵的心情了!现在短视频、直播火得一塌糊涂,拍摄剪辑早就不是“兴趣爱好”,而是能变现、能转行的硬技能——我查过《…

Excel数据检测大师:ISBLANK与ISLOGICAL函数实战指南

如何从杂乱的数据中快速识别空白项和逻辑值?这两个函数能帮你建立数据质量检查的第一道防线! 一、核心函数解析:数据质量的守门员 1. ISBLANK函数 - 空白检测专家 ISBLANK(单元格引用) 功能:判断指定单元格是否为空。如果是真正空…

java_ssm11办公电子政务管理系统 上下班考勤打卡系统

目录 具体实现截图办公电子政务管理系统与上下班考勤打卡系统摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 办公电子政务管理系统与上下班考勤打卡系统摘要 办公电子政务管理系统是基于…

​工信部发布人形机器人标准化指南,博银合创落地工业具身智能实验室,Meta发布V-JEPA 2世界模型,博世与OpenAI深化合作

工信部发布人形机器人标准化体系指南,推动产业规模化发展 国新办发布会上,工信部明确宣布将正式印发《人形机器人与具身智能综合标准化体系建设指南》,同步加大国家人工智能产业基金扶持力度,推进开源社区建设,破解行…

2026年西安发泡混凝土厂家靠谱推荐陕西曲益存建筑工程有限公司-深耕发泡混凝土领域

发泡混凝土是一种通过在水泥浆料中引入大量均匀、封闭的气泡而制成的轻质多孔材料。它结合了混凝土的耐久性和泡沫的轻质性,在现代建筑和工程中应用广泛。一、西安发泡混凝土厂家陕西曲益存建筑工程有限公司top实力解…

让机器人拥有本能反应!清华开源:一套代码实现跑酷、野外徒步两大能力

清华大学交叉信息研究院与上海期智研究院联合推出的Project-Instinct框架,给出了一个新答案。 如何让机器人同时具备“本能反应”与复杂运动能力? 清华大学交叉信息研究院与上海期智研究院联合推出的Project-Instinct框架,给出了一个新答案…

java_ssm2 甜品蛋糕店商城销售管理系统_7sp39

目录 具体实现截图系统概述技术架构核心功能模块创新与优化应用价值 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 系统概述 Java_SSM2甜品蛋糕店商城销售管理系统是一款基于SSM(…

6G基站与终端协作感知关键技术报告:基站与终端协作,解锁高精度感知一体化未来

摘要:本报告基于3GPP 6G标准化进展,揭秘基站与终端协作感知的核心逻辑:通过“基站广覆盖终端泛在分布”优势互补,实现高精度、全场景感知,为通信行业从业者、技术研发人员、政策制定者提供全景式技术指南。6G 时代的协…

马斯克下场抢人!xAI组建「人才狙击队」,极客版HR年薪168万

xAI认为,想从常规人才市场招真正的顶尖人才,没戏。还得靠熟人推荐、线下活动、竞赛选拔、特定线上社区,以及各种更具创造性的渠道。马斯克要亲自下场抢人了。最新消息,xAI正组建一支「AI人才狙击队」,直接向马斯克汇报…

回收微信立减金前必读清单,避开陷阱,安全操作指南

信立减金是日常消费的“隐形福利”,可不少人因闲置或额度溢出想将其回收变现。但微信立减金回收市场良莠不齐,隐私泄露、资金损失等风险暗藏。这份必读清单,助你安全完成回收。 一、确认关键信息,避免资源浪费 回收…

java_ssm3旅行日记旅行攻略分享系统

目录 具体实现截图基于SSM框架的旅行日记与攻略分享系统设计与实现 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 基于SSM框架的旅行日记与攻略分享系统设计与实现 该系统采用Java语言开发&a…

Java版LeetCode热题100之不同路径:从动态规划到组合数学的全面解析

Java版LeetCode热题100之不同路径:从动态规划到组合数学的全面解析 本文深入剖析 LeetCode 第62题「不同路径」,这是一道经典的网格路径计数问题。文章涵盖题目理解、动态规划(二维与一维)、组合数学三种解法、代码实现、复杂度分…

【开题答辩全过程】以 基于Springboot 的水果售卖系统的设计与开发为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

构建自主同城配送平台,开源跑腿小程序系统的核心优势

温馨提示:文末有资源获取方式对于希望摆脱平台高额抽成、建立独立品牌与客户关系的创业者而言,一套功能完备、自主可控的技术方案至关重要。源码获取方式在源码闪购网。完全独立的品牌运营与用户沉淀系统支持私有化部署与全套UI自定义(包括小…

适合不同年龄段家长管控孩子手机的APP哪个口碑好

问题1:什么样的家长管控APP才算有实力?核心标准是什么? 家长管控APP的实力并非靠宣传噱头堆砌,而是要能真正解决青少年沉迷手机的核心痛点,落地到功能层面,至少要满足精准管控、防规避、易操作、数据透明四大核心…

java_ssm9二手书回收平台 捐赠 购物车 积分兑换统计

目录 具体实现截图摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 摘要 Java_SSM9二手书回收平台是一个基于SSM(SpringSpringMVCMyBatis)框架开发的在线交易系统&a…

支持所有自定义数据时间段查询与导出的跑腿小程序源码系统

温馨提示:文末有资源获取方式在竞争激烈的同城配送领域,精细化运营是制胜关键。本文将深入解析一款专为数据化运营设计的开源同城跑腿小程序源码系统。该系统不仅提供标准化的跑腿业务框架,更通过一系列智能管理功能,赋能运营者实…

北京璞新工业设计设计能力如何,排名情况大汇总

在医疗设备与机器人产业加速升级的当下,专业的工业设计已成为企业产品差异化竞争的核心驱动力。面对市场上良莠不齐的工业设计服务商,如何找到既懂技术又懂市场的合作伙伴?以下结合不同服务类型,为你推荐2026年值得…