Sequelize vs TypeORM: Node.js ORMの比較
Sequelizeは長年定着したJavaScript-firstのORM。TypeORMはdecoratorとエンティティクラスを中心に構築されたTypeScript-nativeのORMです。
Sequelizeは長年にわたりNodeのデフォルトORMで、モデル定義APIと大きなユーザーベースを持ち、TypeScriptサポートは後から追加されました。TypeORMはTypeScript-firstで、エンティティクラスにdecoratorを使い、active-recordとdata-mapperのパターンをサポートします。トレードオフはSequelizeの成熟度か、TypeORMの型ネイティブなエルゴノミクスかです。
| Sequelize | TypeORM | |
|---|---|---|
| 言語適合 | JS-first、TS追加 | TS-native |
| モデル定義 | define() / クラス | decoratorを付けたクラス |
| 型安全性 | 改善中 | decoratorベース |
| 成熟度 | 非常に成熟 | 成熟 |
| 最適な用途 | 定着したJSプロジェクト | TS-firstのプロジェクト |
CIでは
どちらもCLI経由でテストデータベースに対しmigrationsを実行します。どちらもcodegenは不要です。TypeORMはTypeScriptコードベースに対して、そのままでより強い型付けを提供します。Sequelizeは実戦で鍛えられており、大きなプラグインとサンプルのベースがあります。どちらの場合もCI内で使い捨てのPostgresまたはMySQLサービスを使いましょう。
高速化する
依存関係を実行間でcacheし、使い捨てのDBサービスに対してmigrationsを行います。両方ともCI runner上で実行されます。高速なmanaged runnerはinstallとmigrationのステップを短縮します。
結論
実績あるツールでJavaScript-firstのプロジェクトを維持または開始する: Sequelize。decoratorベースのエンティティでTypeScript-firstに構築する: TypeORM。どちらも堅実です。言語適合と既存の投資で選びましょう。