ORM
은 객체(Object)와 관계(Relation)를 연결(Mapping)해 주는 개념입니다.
ORM 사용 ❌
객체와 RDBMS의 연결을 개발자가 직접 관여해서 진행합니다.
ORM 사용 ⭕️
객체와 RDBMS의 연결은 내가 아니라 다른 누군가가(ORM framework) 해줍니다.
TypeORM
는 Node.js, Browser, React Native 플랫폼 등에서 JS,TS와 함께 사용할 수 있는 ORM입니다.
소규모 데이터베이스부터 대규모 엔터프라이즈 어플리케이션을 개발하는데 도움이 되는 추가 기능을 제공하는 것을 목표로 합니다.
다른 ORM과 달리 Active Record(액티브 레코드 패턴)
과 Data Mapper(데이터 매퍼 패턴)
을 모두 지원하여 확장 가능하며 유지보수가 가능한 어플리케이션을 가장 생산적인 방법으로 작성할 수 있습니다.
Active Record
모든 query메소드들을 모델에 정의하고 객체의 저장, 제거 그리고 불러오는 기능들은 모델의 메소드를 통해 사용하는 패턴인데, 결과적으로 SQL을 직접 사용하지 않으면서 데이터를 조작할 수 있습니다.
Active Record 엔티티들은 모델 클래스를 정의하면서 BaseEntity클래스를 확장하였기 때문에 Repository와 Entity Manager를 사용하지 않아도 됩니다. BaseEntity클래스는 표준 Repository클래스의 대부분의 메소드를 갖고 있습니다.
Data Mapper
Data Mapper 패턴에서는 모든 쿼리 메소드들을 별도의 클래스에 정의합니다.
이 때 생성된 별도의 클래스를 repository라고 부르는데, 데이터베이스에 접근하기 위해 모델이 아닌 repository를 통해 접근하는 것을 Data mapper 라고 합니다.