반응형
이 글은 TypeORM의 기본적인 개념에 대해 설명하고, 샘플 소스를 통해 TypeORM의 기본적인 사용법에 대해 설명합니다.
이 글의 동영상 강의를 보고 싶으시면 아래를 클릭하세요.
목차
- ORM(TypeORM) 개념
- ORM(TypeORM)의 장단점
- TypeORM 셋팅하기
ORM(TypeORM) 개념
- TypeORM = "Typescript + ORM"을 의미합니다. 즉, typescript에서 orm을 사용할 수 있도록 만든 프레임워크입니다.
- ORM은 Object-Relational Mapping의 약자입니다.
- Object = 객체지향언어에서 말하는 객체(Object)를 의미합니다.
- Relational = 관계형 데이터베이스(Relational Database)를 의미합니다.
- 즉, 객체와 관계형 데이터베이스를 자동으로 맵핑 시켜주는 기술을 ORM이라고 합니다.
- ORM을 사용하면 DB의 종류에 상관없이 코딩을 할 수 있습니다. 즉, MySQL, PostgreSQL, Oracle등 어떤 Database를 사용하더라도 동일 코드로 작성하여 사용할 수 있도록 만들어진 프레임워크입니다.
- 결론 : TypeORM은 Typescript에서 사용하는 ORM 프레임워크입니다.
ORM(TypeORM)의 장단점
- Database의 쿼리문을 사용하는 대신, 기존과 유사한 방식으로 코드를 작성하므로 사용이 편리하다.
- 독립적인 코드를 사용하므로 재사용성이 증가한다.
- DBMS에 종속적인 쿼리를 사용하지 않으므로, DB 변경이 용이하다.
- 테이블간의 관계가 복잡해지고 쿼리가 복잡해질 수록 구현이 어렵다.
- 쿼리를 많이 사용해본 사람일 경우, 쿼리를 사용했을때 보다 직관성이 떨어진다.
TypeORM 셋팅하기
- Nestjs 프로젝트를 만듭니다.
nest new typeorm2023
- TypeORM 관련 패키지를 설치합니다.
npm install --save @nestjs/typeorm typeorm mysql2
- root 폴더에 orm.config.ts를 만들고 다음과 같이 추가합니다.
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
function ormConfig(): TypeOrmModuleOptions {
const commonConf = {
SYNCRONIZE: false,
ENTITIES: [__dirname + '/domain/*{.ts,.js}'],
MIGRATIONS: [__dirname + '/migrations/**/*{.ts,.js}'],
MIGRATIONS_RUN: false,
};
return {
name: 'default',
type: 'mysql',
database: 'test',
host: 'localhost',
port: Number(3306),
username: 'root',
password: 'root',
logging: true,
synchronize: commonConf.SYNCRONIZE,
entities: commonConf.ENTITIES,
migrations: commonConf.MIGRATIONS,
migrationsRun: commonConf.MIGRATIONS_RUN,
};
}
export { ormConfig };
- 세부사항들을 설명하면 다음과 같습니다.
- SYNCRONIZE는 객체와 테이블을 동기화 할때 사용합니다. 즉, 객체가 변경되면 테이블에 자동 반영이 되고, 테이블이 변경되면 객체가 자동 변경되는 기능입니다. 이 기능을 운영서버에서 사용할 때는 주의가 필요합니다. 운영중인 데이터는 용량이 크고, 이런 변화가 있을 경우 문제가 생길 수 있으므로, 만약의 사고를 예방하기 위해서는 이 기능을 "false"로 설정하는 것이 좋습니다.
- ENTITIES는 객체가 위치하는 폴더를 의미합니다. 즉, 테이블의 schema를 객체로 만들어 저장하는 파일들이 위치하는 곳입니다.
셋팅이 완료되면 다음과 같이 최상위 모듈에 ormConfig를 추가해 줌으로써 사용이 가능하게 됩니다.
- app.module.ts에 ormConfig를 추가합니다.
import { ormConfig } from './orm.config';
@Module({
imports: [
TypeOrmModule.forRootAsync({ useFactory: ormConfig }),
...
],
...
})
다음은 TypeORM 기초 사용법에 대해 알아보도록 하겠습니다.
반응형
'TypeORM' 카테고리의 다른 글
[Nestjs] TypeORM Multiple Database Connection 설정 후 DataSource 사용법 (0) | 2024.09.20 |
---|---|
TypeORM Entity 자동생성툴 - typeorm-model-generator (5) | 2024.09.08 |
3. TypeORM에서 Repository의 개념 이해하기 (0) | 2023.09.12 |
2. TypeORM 사용법 기초 (2023, NestJS) (2) | 2023.05.07 |