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 기반 모델을 중시하고 타입이 지정된 entity를 원하는 팀, 그리고 쿼리가 대부분 CRUD이고 가끔 QueryBuilder를 쓰는 앱.
ORM 선택은 모든 기능이 데이터베이스에 닿는 방식을 좌우하는 장기적 약속입니다. TypeORM의 TypeScript 우선 설계는 타입이 지정된 코드베이스에 실질적인 생산성 이득이지만, 면접관은 당신이 그 한계 — 부분적인 쿼리 타이핑, 복잡한 쿼리의 고통, 울퉁불퉁한 릴리스 이력 — 도 안다는 것을 듣고 싶어 합니다. 그래야 hype로 도입하는 대신, 그 편의성이 거친 부분을 언제 능가하는지 판단할 수 있기 때문입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기