ORM(Object-relatinal mapping)이란 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미 합니다.
객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용합니다. 여기서 객체 모델과 관계형 모델간에 불일치가 존재 하는데 이 객체간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결 하는 것이 ORM입니다.
TypeORM은 Node.js, Browser, React Native 플랫폼 등에서 JS,TS와 함께 사용할 수 있는 ORM입니다. 소규모 데이터베이스부터 대규모 엔터프라이즈 어플리케이션을 개발하는데 도움이 되는 추가 기능을 제공하는 것을 목표로 합니다. 다른 ORM과 달리 액티브 레코드 패턴 과 데이터 매퍼 패턴을 모두 지원하여 확장 가능하며 유지보수가 가능한 어플리케이션을 가장 생산적인 방법으로 작성할 수 있습니다.
액티브 레코드 패턴은 모델 자체 내에서 모든 쿼리 메서드를 정의하고 모델 메서드를 사용하여 오브젝트를 생성,삭제,조회,수정할 수 있게 하는 방식을 의미합니다.
데이터 매퍼 패턴은 "레포지토리" 라는 별도의 클래스에서 모든 쿼리 메서드를 정의하고 이 "레포지토리"를 사용하여 오브젝트를 생성, 삭제, 조회, 수정할 수 있습니다.