全书目录

第二十四篇:TypeORM 完全指南 —— 数据映射施工队宇宙

第十一章:TypeORM 和 Prisma / 原生 SQL 的区别 —— 规划院、施工总包、手工施工队

2 分钟 769 字 第 443 / 962 个阅读单元

这一章必须讲透,不然工具边界会混。

#1. TypeORM 和 Prisma 的区别

在软件城市里可以这样类比:

text
Prisma
= 规划院 + 标准审批图中心 + 自动生成办事窗口

TypeORM
= 直接对接工地的施工总包

Prisma 更强调:

  • schema-first
  • 生成类型安全 client
  • 返回普通对象
  • 把 schema、migration、client 绑成一条声明式链路

TypeORM 更强调:

  • 直接用实体类建模
  • 面向对象映射更浓
  • Repository / EntityManager / QueryBuilder 更贴近 ORM 施工现场
  • 同时支持 Active Record 与 Data Mapper
#一个很实用的对比
text
Prisma 问题意识:
“先把数据章程写清楚,再生成客户端,用规范入口办事。”

TypeORM 问题意识:
“先把实体蓝图建清楚,再通过仓库、管理器、查询构建器直接施工。”
#什么时候 TypeORM 往往更顺手
  • 你更喜欢类和装饰器建模
  • 你需要比较传统 ORM 的工作方式
  • 你需要 Active Record / Data Mapper 可选
  • 你经常写复杂 join 和 QueryBuilder
  • 你的团队已经接受 ORM 式实体模型
#什么时候 Prisma 往往更顺手
  • 你特别重视 schema-first 和生成式工作流
  • 你想要 plain object 返回值
  • 你想让类型安全和声明式 schema 更靠前
  • 你不想把业务对象做成 ORM 实例风格

#2. TypeORM 和原生 SQL 的区别

原生 SQL 在软件城市里更像:

你自己拿施工指令、钢尺和焊枪,逐条指挥工地。

优点:

  • 控制力最高
  • SQL 语义最直接
  • 复杂报表、极致性能优化、数据库专有特性时非常强

代价:

  • 重复样板多
  • 映射成本高
  • 数据模型和查询代码容易散
  • 类型与结构一致性更多靠人维护

TypeORM 的价值不是“取代 SQL 常识”,而是:

  • 把高频 CRUD 工程化
  • 把关系映射组织起来
  • 把事务入口统一起来
  • 让复杂查询有 QueryBuilder 这种中间层
#最现实的团队打法通常是
text
70%~90% 常规业务查询
-> TypeORM

少量复杂统计 / 专有优化 / 特殊 SQL
-> 原生 SQL

所以成熟心智不是:

text
用了 TypeORM 就不写 SQL

而是:

text
大部分施工交给总包,
特殊结构和精密施工时亲自下场。