TypeORM
TypeORM은 TypeScript와 JavaScript (ES7, ES6, ES5)를 위한 ORM (Object-Relational Mapping)입니다. 데이터베이스 테이블은 클래스를 사용하여 모델링 되고, 이러한 클래스의 인스턴스는 데이터베이스에 있는 행에 해당합니다. JPA(Java Persistence API) 와 비슷한 객체 관계 매핑(Object-Relational Mapping, ORM) 라이브러리로, 개발자가 데이터베이스와의 상호 작용을 추상화된 객체 지향적인 방식으로 다루게 도와줍니다. TypeORM의 주요 특징은 다음과 같습니다 1. Active Record 패턴과 Data Mapper 패턴 지원: 데이터베이스의 행을 클래스 인스턴스로 표현하는 Active Record 패턴과, 객체와 데이터베이스 사이의 상호작용을 처리하는 별도의 인터페이스를 제공하는 Data Mapper 패턴을 모두 지원하여 데이터베이스와 객체 지향 프로그래밍 사이의 격차를 해소하는 데 도움을 줍니다. 2. 다양한 데이터베이스 지원: MySQL / MariaDB, PostgreSQL, CockroachDB, SQLite, Microsoft SQL Server, Oracle, SAP Hana, 그리고 MongoDB와 같은 많은 데이터베이스를 지원합니다. 3. Migrations과 Automatic schema sync: TypeORM은 코드에서 데이터베이스 스키마를 자동으로 생성하거나 업데이트할 수 있습니다. 이 기능은 개발 과정을 쉽게 만들어 줍니다. 또한, 배포 시에는 migrations를 통해 데이터베이스 변경 사항을 관리하고 적용할 수 있습니다. JPA나 ORM 도구를 SQL 대신 사용하면서 얻는 이점은 DB 추상화 및 독립성, 객체 지향 프로그래밍, 자동 DDL 생성 등이 있습니다. 하지만, ORM 사용 방법에 대한 이해도에 따라 때로는 비효율적인 SQL 쿼리를 생성하는 경우도 있습니다. 따라서, 무조건적으로 ORM에 의존하기보다는, 로깅을 통해 SQL 쿼리를 추적하면서 사용하는 것을 추천드립니다. https://typeorm.io/