Skip to content
Latchkey

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の型ネイティブなエルゴノミクスかです。

SequelizeTypeORM
言語適合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。どちらも堅実です。言語適合と既存の投資で選びましょう。

関連ガイド