这一章必须讲透,不然工具边界会混。
#1. TypeORM 和 Prisma 的区别
在软件城市里可以这样类比:
Prisma
= 规划院 + 标准审批图中心 + 自动生成办事窗口
TypeORM
= 直接对接工地的施工总包Prisma 更强调:
- schema-first
- 生成类型安全 client
- 返回普通对象
- 把 schema、migration、client 绑成一条声明式链路
TypeORM 更强调:
- 直接用实体类建模
- 面向对象映射更浓
- Repository / EntityManager / QueryBuilder 更贴近 ORM 施工现场
- 同时支持 Active Record 与 Data Mapper
#一个很实用的对比
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 这种中间层
#最现实的团队打法通常是
70%~90% 常规业务查询
-> TypeORM
少量复杂统计 / 专有优化 / 特殊 SQL
-> 原生 SQL所以成熟心智不是:
用了 TypeORM 就不写 SQL而是:
大部分施工交给总包,
特殊结构和精密施工时亲自下场。