TypeORM
作为传统 ORM 代表,采用 类与装饰器 定义实体(Entity),通过注解描述表结构、关系和约束
- 装饰器定义:通过在实体类上使用装饰器定义数据模型,模型定义与代码耦合度较高。
- 自动生成 SQL 迁移文件: 通过实体定义,TypeORM 可以根据模型变化自动生成相应的 SQL 迁移脚本
TypeORM 的不足之处
- 复杂查询中的类型验证问题
- 在进行复杂查询时,由于查询构建器返回的结果类型可能不够精确,开发者往往需要手动进行类型验证或转换,增加了开发复杂度和出错风险。
- 延迟加载的不确定性
- TypeORM 支持延迟加载(Lazy Loading)关系数据,但在实际使用中,延迟加载可能导致查询时机不易掌控,从而带来不可预测的查询行为或性能问题。例如,某些关联数据的加载时机可能影响事务处理或数据一致性。
- 模型定义与代码的耦合
- 使用装饰器将实体定义嵌入业务代码中,虽然直观方便,但也使得数据模型与业务逻辑耦合较高。这在项目规模较大或需要频繁变更数据模型时,可能影响代码的可维护性和解耦设计。