카테고리 없음
TypeORM : SQL 기록장치, 근데 이제 Typescript를 곁들인.
브렌쏭
2022. 3. 22. 16:10
TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server,
typeorm.io
SQL형태의 DB에 접근하는 것을 돕는 라이브러리다. 특히나 typescript 지원에 강점이 있으므로, 타입스크립트와 MySQL을 사용한다면 사실상 정해진 조합이다. 반대로 NoSQL 타입의 데이터베이스를 사용한다면 MongoDB에 Mongoose 조합이 많을 것 같다.(ODM)
ORM? ODM.....
Object-Relational Mapping(or Model) 은 전통적인 데이터 기록 방식이다. 엑셀처럼 표와 같은 형태로 데이터를 기록하고, 그 안이나 그 밖의 표가 있다면, 링크를 붙여 다음 표는 어디에 잇어요~ 하고 써두는 방법이다. 하이퍼링크로 연결된 표들의 웹 같은걸 떠올려도 좋다.
반면 ODM이라 하면 Object-Document Mapper, 혹은 모델로, 표처럼 정리해서 문서를 써넣는게 아니라 그냥 문서들을 크기와 타입 관계없이 무지성으로 때려박는 것이다. 그냥 때려박는 건 아니고, 도서관을 정리하듯이 각 문서의 위치를 기록해두는 인덱스를 둔다. 도서검색기와 도서관이라고 생각하면 된다.
내가 느끼기엔 그렇다. 갸우뚱한 느낌이 들면 당신이 맞다.
Active Record 패턴과 Data Mapper 패턴
일단은 typeORM에 대한 포스팅이므로, 그 특징을 보자. 하이퍼링크와 표 뭉탱이였다.
Active Record
- Active Record 패턴은 모델 그 자체에 쿼리 메소드를 정의한다. (행, 열, 제목 등의 요소로)
- 모델의 메소드를 사용하여 객체를 저장, 제거, 불러오는 방식 (데이터 자체를 사용)
- BaseEntity라는 클래스를 사용하여 새로운 클래스에 상속하게 한 후 사용 가능 (무서우니까 상속해서 복사)
- 따라서 BaseEntity가 갖고 있는 메소드와 static으로 만들어 내는 커스텀 메소드를 이용 가능
- 규모가 작은 애플리케이션에서 적합하고 간단히 사용할 수 있다 (일단 엑셀은 직관적이다)
Data Mapper
- Data Mapper 패턴은 분리된 클래스에 쿼리 메소드를 정의하는 방식 (묶어서 그룹 이름짓기)
- Repository를 이용하여 객체를 저장, 제거, 불러온다. (저장소를 통한 비파괴 편집 느낌이다, 라이트룸처럼..)
- Active Record 패턴과의 차이점은 모델에 직접 접근하지 않고, Repository에서 데이터에 접근한다는 것
- 규모가 큰 애플리케이션에 적합하고 유지보수하는데 효과적 (이라고 한다)