CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
ORM 与数据库设计/课时/ORM 是什么
RawBlame
课时目录12 节

ORM 与数据库设计

  1. 01ORM 是什么
  2. 02范式与规范化
  3. 03ER 模型
  4. 04JPA 与 Hibernate
  5. 05MyBatis
  6. 06Spring Data 家族
  7. 07Schema 迁移
  8. 08N+1 与抓取策略
  9. 09MariaDB 与 MySQL
  10. 10ORM 与事务
  11. 11反模式
  12. 12综合练习

ORM 是什么

对象-关系映射动机;与原生 SQL 分工。

30 分钟

ORM 是什么

CodeRoadMap 后端用 MySQL 存 cf_track、cf_lesson 等表,Java 代码里却是 Track、Lesson 对象。ORM(Object-Relational Mapping)负责在对象与表行之间翻译。

学习目标

  • 理解 ORM 要解决的「阻抗不匹配」
  • 知道 ORM 与手写 SQL 的分工
  • 对照本站 MyBatis + JPA 混用场景

阻抗不匹配

面向对象关系数据库
类、继承表、无外键继承
引用(track.lessons)外键 track_id
懒加载、级联JOIN、触发器

ORM 框架(Hibernate/JPA、MyBatis)把 持久化细节 从业务代码里抽离,让你用 Java 类型思考,而不是满屏 ResultSet。

在本站架构里

Controller → Service → Repository / Mapper → MySQL
                         ↑
                    JPA Entity 或 MyBatis XML
  • JPA:TrackRepository.findBySlug() 自动生成 SQL
  • MyBatis:复杂报表、批量更新写 XML,可控性高

同一项目可并存,但 域模型应统一,避免一张表两套 POJO。

何时用 ORM、何时写 SQL

场景倾向
CRUD、按字段查询JPA / Spring Data
多表 JOIN + 动态条件MyBatis
报表、窗口函数原生 SQL / MyBatis
学习 SQL 本身sql-essentials

ORM 不是替代 SQL——不懂 SQL 的 ORM 工程师会写出 N+1 和慢查询。

相关课程

  • 前置:sql-intro、sql-design
  • 实践:sb-jpa、sb-jdbc
  • 非关系型对比:mongo-vs-sql

练习

  • 打开 schema.sql,找到 cf_lesson.track_id 外键
  • 在 backend 搜索 或 ,判断用的是 JPA 还是 MyBatis
Track
TrackMapper
  • 用一句话说明:ORM 帮你省下了什么、没省下什么
  • 小结

    ORM 把表行映射成对象,让持久化更接近业务语言。 下一课讲范式,理解表为什么要这样拆。

    加载本节练习…
    下一课 →范式与规范化