TypeORM は Node.js 向けの TypeScript ファーストな ORM です。decorator に頼ってクラスをテーブルにマッピングし、Active Record と Data Mapper の両パターンをサポートします。最大の魅力は TypeScript との深い統合であり、最大のリスクはクエリ層の粗さと、むらのあるメンテナンス履歴です。
user.save())を、テスト可能で疎結合なコードには Data Mapper(repository.save(user))を使えます。@Entity()
class User {
@PrimaryGeneratedColumn() id: number;
@Column({ unique: true }) email: string;
@OneToMany(() => Post, (p) => p.author) posts: Post[];
}
const users = await dataSource
.getRepository(User)
.find({ where: { email: "[email protected]" }, relations: { posts: true } });
find のオプションや QueryBuilder は部分的にしか型付けされず、カラム名の誤りはコンパイル時ではなく実行時に失敗することが多いです。新規(greenfield)の TypeScript バックエンド(NestJS と自然に組み合わさります)、decorator ベースのモデルを重んじ型付きエンティティを求めるチーム、そしてクエリがほぼ CRUD で時折 QueryBuilder を使うアプリ。
ORM を選ぶことは、あらゆる機能がどのようにデータベースに触れるかを形づくる長期的なコミットメントです。TypeORM の TypeScript ファーストな設計は型付きコードベースにとって本物の生産性の利点ですが、面接官はあなたがその限界——部分的なクエリ型付け、複雑なクエリの痛み、でこぼこなリリース履歴——も理解していることを聞きたがります。それにより、hype で採用するのではなく、いつその使い勝手が粗さを上回るかを判断できるからです。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する