TypeORM:TypeScript 项目的 ORM 框架

TypeORM 是一个面向 Node.js 平台的 ORM 框架,GitHub 上 Star 数达到 36,536,在 JavaScript/TypeScript 生态中属于使用量靠前的数据库映射工具。

正文顶部截图

TypeORM 支持的数据库种类比同类工具多,包括 MySQL、PostgreSQL、SQLite、SQL Server、Oracle、MongoDB、SAP HANA 等。无论项目用哪种数据库,基本都能直接接入。

README区域截图

核心特性

TypeORM 同时支持 DataMapper 和 ActiveRecord 两种模式。DataMapper 模式下,实体和数据操作分离,适合大型项目;ActiveRecord 模式下,实体自己管理持久化,写起来更快。

用装饰器定义实体的写法很直观:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"

@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    firstName: string

    @Column()
    lastName: string

    @Column()
    age: number
}

查询数据的代码同样简洁:

const userRepository = MyDataSource.getRepository(User)
const allUsers = await userRepository.find()
const firstUser = await userRepository.findOneBy({ id: 1 })

主要功能

TypeORM 覆盖了日常开发中会用到的大部分数据库操作功能:

  • 实体关联:支持一对一、一对多、多对多以及自引用关联
  • 事务处理:可以对多步数据库操作做原子性提交
  • 迁移系统:支持手写迁移脚本,也能从实体定义自动生成
  • 查询构建器:提供链式 API,支持 left join、inner join、分页等
  • 连接池和主从复制:应对高并发场景
  • 日志和监听器:方便调试和在数据变更时执行自定义逻辑

运行平台

TypeORM 不只跑在 Node.js 上,还能在浏览器、React Native、Electron、Ionic 等环境中使用。对 TypeScript 有原生支持,同时也兼容纯 JavaScript 和 ESM 模块。

安装

通过 npm 安装:

npm install typeorm reflect-metadata

TypeORM 的设计思路受到 Hibernate、Doctrine、Entity Framework 等成熟 ORM 的影响,把 Java 和 C# 生态中验证过的模式带到了 JavaScript 世界。对于需要在 TypeScript 项目中做数据库操作的团队来说,TypeORM 是一个值得考虑的选择。

了 JavaScript 世界。对于需要在 TypeScript 项目中做数据库操作的团队来说,TypeORM 是一个值得考虑的选择。

更多推荐