Code-First 与数据库迁移工具设计文档
1️⃣ Code-First 风格概览
Code-First 的核心思想:先定义实体/模型类,再生成数据库表结构和迁移脚本。
适合大模型自动生成后端代码,直接落地数据库。
1.1 主流 Code-First 框架
语言/平台 | 框架 | 特点 |
---|---|---|
Java | MyBatis Plus | 注解 + 实体类生成表,可配合 Flyway/Liquibase 管理迁移 |
Java | Hibernate / Spring Data JPA | 经典 ORM,@Entity 注解生成表,自动管理关系,支持 SchemaExport |
C# | Entity Framework Core | 类 + 属性生成表,支持迁移命令(Add-Migration / Update-Database) |
C# | SqlSugar | Code-First + 数据库同步功能,轻量级 ORM |
Node.js/TypeScript | TypeORM | 装饰器 + 类生成表,支持迁移和关系映射 |
Node.js/TypeScript | Prisma | Schema DSL → 生成数据库表和类型安全 TS 类 |
Python | Django ORM | Model 类生成表,内置迁移管理(makemigrations / migrate) |
Python | SQLAlchemy + Alembic | 类 + ORM 映射生成表,Alembic 管理迁移 |
Go | GORM / Ent | 结构体 + tag 定义表,支持迁移和 CRUD 生成 |
总结:Code-First 不局限语言,关键是 ORM/框架支持从类生成表并管理迁移。
2️⃣ 数据库迁移工具
数据库迁移工具用于 管理表结构变更,保证多环境一致性。主流工具包括 Flyway 和 Liquibase。
2.1 Flyway
-
核心理念:基于 SQL 脚本或 Java 代码版本控制数据库
-
文件命名规则:V1__init.sql, V2__add_column.sql …
-
特点:
- 轻量级,简单易用
- SQL 优先,可直接写原生 SQL
- 支持 Spring Boot 集成
- 回滚需要手写 SQL
2.2 Liquibase
-
核心理念:基于 ChangeSet 声明式迁移
-
文件格式:XML / YAML / JSON / SQL
-
特点:
- 功能丰富:回滚、条件执行、环境上下文
- 支持跨数据库迁移
- 支持 Spring Boot 集成
- 学习成本相对高
2.3 Flyway vs Liquibase 对比
特性 | Flyway | Liquibase |
---|---|---|
核心理念 | SQL 脚本版本控制 | ChangeSet 声明式迁移 |
文件格式 | SQL / Java | XML / YAML / JSON / SQL |
回滚支持 | ❌ 手动 | ✅ 自动/手动 |
条件/上下文 | ❌ | ✅ |
学习成本 | 低 | 中等偏高 |
适合场景 | 简单迭代,轻量项目 | 企业级复杂数据库管理 |
对小型 OA 项目(约 100 人)来说,Flyway 足够轻量易用。
3️⃣ Code-First + 数据迁移流程示意
- A → B:Code-First ORM 根据类生成表结构
- B → C:迁移工具(Flyway/Liquibase)生成可执行迁移脚本
- C → D/E/F:迁移脚本在各环境执行,保证结构一致
- B → G → C:结合大模型自动生成后端代码,直接同步迁移脚本
4️⃣ 总结建议
-
Code-First ORM 选择:
- 小型项目/快速迭代 → TypeORM (Node.js), SqlSugar (C#)
- 企业级项目 → Hibernate/JPA (Java), EF Core (C#)
-
数据库迁移工具选择:
- 简单项目 → Flyway
- 复杂/跨环境 → Liquibase
-
大模型落地流程:
- 定义实体 → Claude/大模型生成 ORM 代码 → 生成迁移脚本 → Flyway 执行 → 数据库落地
对你公司的轻量 OA 项目:Node.js + TypeORM + Flyway + Claude 生成 ORM 代码,完全可以实现 Code-First 自动化开发。