[ORM] TypeOrm setting
DataBase

[ORM] TypeOrm setting

반응형

  제 경험에 비추었을때는 보통 자바스크립트에서는 시퀄라이즈를 많이 쓰지만, 타입스크립트에서는 TypeORM을 많이 쓰는 것 같습니다.

그리고 시퀄라이즈를 이미 잘 쓰고 있지만 타입스크립트를 배우면서 TypeOrm을 구글링해서 찾아보고 적용하는데, 전부 내용이 이전 버전이라서 의문점이 많았는데 결국 공식문서가 답이었고, 시퀄라이즈를 알고 있는 상태에서 typeorm 공식문서를 보게되니 결국 사용 구조는 비슷하기 때문에  천천히라도 이해할 수 있었습니다. 진짜 처음에는 공식문서만 봐도 답답했었는데 (지금도 답답하지만) 길은 항상 있다는 것을 느꼈습니다.

 

TypeOrm 특징

TypeORM은 많은 데이터 베이스를 지원하고

(MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / SAP)

현재 존재하는 다른 모든 JavaScript ORM과 달리 Active Record  Data Mapper 패턴을 모두 지원합니다. 즉, 고품질의 느슨하게 결합되고 확장 가능하고 유지 관리 가능한 애플리케이션을 가장 생산적인 방식으로 작성할 수 있습니다.

(결합도가 낮고, 높은 수준의 확장가능한 어플리케이션을 작성할 수 있다고 합니다.)

 

 

TypeOrm 설치, 적용

//1. npm 패키지를 설치합니다.
npm install typeorm --save

//2. reflect-metadatashim 을 설치해야 합니다 .
npm install reflect-metadata --save

//앱의 전역 위치(예 app.ts: ) 에서 가져옵니다.
//import "reflect-metadata"

//3. 노드 유형을 설치해야 할 수도 있습니다.
npm install @types/node --save-dev

공식문서에서 친절하게 알려줍니다 

 

그리고 typeorm은 Decorators 를 사용합니다 그렇기 때문에 tsconfig.joson 에서 아래의 값을 true로 설정해 주어야 합니다.

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

 

 

typeorm 파일 만들기 번거로우면 아래 해당하는 명령어를 입력하면 쉽게 세팅이 가능합니다.

(깔려져 있는 버전에 맞게끔 설정을 해줌)

npx typeorm init --name MyProject --database postgres

 

아래와 같이 좀 더 편리하게 설치도 가능합니다. 

npx typeorm init --name MyProject --database postgres --module esm명령 을 실행하여 ESM 프로젝트를 생성할 수 있습니다 .

npx typeorm init --name MyProject --database mysql --express명령 을 실행하여 설치된 Express를 사용하여 훨씬 더 고급 프로젝트를 생성할 수 있습니다 .

npx typeorm init --name MyProject --database postgres --docker명령 을 실행하여 docker-compose 파일을 생성할 수 있습니다 .

 

 

지금 현재 많이 쓰는 버전이 0.2.45 버전인것 같은데 이 버전에서는 json으로 연결 세팅을 하는데 createConnection 함수를 사용하지만, 0.3 공식문서에는 createConnection 함수가 없어졌으며, 아래 파일 경로처럼 ormconfig.json이 없고 data-source.ts로 연결을 합니다. 

파일경로

 

세팅함에 있어서 햇갈렸던 부분이라 참고하시면 될 것 같습니다. 0.2 버전으로 DB를 연결하는 방법이 사라지고 위의 방법으로 연결을 하면 됩니다.

버전별 업데이트 내용 https://github.com/typeorm/typeorm/blob/master/CHANGELOG.md

 

설정에서 synchronize 설정에서 키면 자동으로 테이블을 생성 가능한데, 배포후에도 설정을 해놓은 상태면 기존 데이터는 삭제하고 다시 테이블을 만들게 됩니다.

배포 전 개발단계에서는 편리하게 사용 하지만 배포 단계에서는 문제가 되기 때문에 migration을 설정 해 주어야 합니다. 아직 마이그레이션에 대한 공식문서가 명확하지 않은 것 같아 사용이 어려워 추후에 계속 쓰겠습니다.

 

 

 

공식문서

https://www.npmjs.com/package/typeorm

https://typeorm.io/#/   (코드번역X)

반응형

'DataBase' 카테고리의 다른 글

[DB] NoSQL MongoDB Basic  (0) 2021.07.31
[ORM] Sequelize 사용과제 (Node.js ORM)  (0) 2021.07.29
[DB] ORM, MVC에 대해서  (0) 2021.07.29
[DB] SQL 정리  (0) 2021.07.27
[DB] 설계 (Schema & Query Design) / SQL 함수, 실행순서  (0) 2021.07.23