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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
ORM 与数据库设计/课时/Schema 迁移
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综合练习

Schema 迁移

Flyway/Liquibase、schema.sql 直觉。

30 分钟

Schema 迁移

表结构会随功能演进变更。迁移工具(Flyway / Liquibase)把每次 DDL 变成版本化脚本,可重复、可审计——比手改线上库安全。

学习目标

  • 理解 schema.sql 与增量迁移的分工
  • 读懂 Flyway 命名与执行顺序
  • 知道 JPA ddl-auto 在生产为何禁用

本站现状

文件用途
backend/src/main/resources/schema.sql全量建表(新环境初始化直觉)
migration/V*.sql增量变更(Flyway 风格)

cf_track、cf_lesson 等表定义以 schema.sql 为文档真相;线上变更走迁移脚本。

Flyway 脚本示例

-- V2__add_lesson_is_preview.sql
ALTER TABLE cf_lesson
  ADD COLUMN is_preview TINYINT(1) NOT NULL DEFAULT 0
  COMMENT '会员课是否可试看';

命名:V{版本}__{描述}.sql,按版本号顺序执行,已执行的不会重复跑。

Spring Boot 配置

spring:
  flyway:
    enabled: true
    locations: classpath:db/migration
  jpa:
    hibernate:
      ddl-auto: validate   # 生产:只校验,不自动改表
ddl-auto行为环境
create-drop启动建表、关闭删表单元测试
update自动 ALTER仅限本地实验
validate实体与表不一致则启动失败生产推荐

ORM Entity 改了字段,必须同步写迁移 SQL,不能指望 Hibernate 自动 ALTER。

Liquibase(了解)

用 XML/YAML 描述变更,支持回滚块。团队若已标准化可选;本站示例以 Flyway SQL 为主。

对照 pg-migrate 理解跨数据库迁移思路。

相关课程

  • sql-design
  • orm-jpa
  • pg-ddl

练习

  • 打开 schema.sql,数一下 cf_lesson 有多少列
  • 设计 给 加
V3__add_track_icon.sql
cf_track
icon_url VARCHAR(512)
  • 解释为何生产不能用 ddl-auto=update
  • 小结

    迁移脚本是表结构的 Git 提交记录。 下一课攻克 ORM 经典性能坑 N+1。

    加载本节练习…
    ← 上一课Spring Data 家族下一课 →N+1 与抓取策略