본문 바로가기
Node ( + nest.js)

[nestjs] 03. TypeORM

by doozzuri 2023. 1. 14.
반응형

1. TypeORM

  • node.js에서 실행되고 TypeScript로 작성된 객체 관계형 매퍼 라이브러리.
  • 여러 데이터 베이스 지원(PostgreSQL, MariaDB, MySQL, SQLite, MS SQL Server)

 

2. ORM (Object Relational Mapping)

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업.
  • ORM을 이용한 개발은 객체와 데이터 베이스의 변형에 유연하게 사용할 수 있음.
    • 관계형 데이터 베이스 : 테이블 사용.
    • 객체지향 프로그래밍 : 클래스 사용.
//TypeORM
const boards = Board.find({ title: 'Hello', status: 'PUBLIC'});

//Pure javascript
db.query('SELECT * FROM boards WHERE title = "Hello" AND status = "PUBLIC"', (err, result) =>
					{
						if(err){
							throw new Error('Error')
						}
						boards = result.rows;
					}
) 

 

3. TypeORM 특징과 이점

  • 모델을 기반으로 데이터베이스 테이블 체계를 자동으로 생성함.
  • 데이터베이스에서 개체를 쉽게 삽입, 업데이트 및 삭제할 수 있음.
  • 테이블 간의 매핑(일대일, 일대다, 다대다)를 만듦.
  • 간단한 CLI 명령을 제공.
  • TypeORM은 간단한 코딩으로 ORM 프레임워크를 사용하기 쉬움.
  • TypeORM은 다른 모듈과 쉽게 통합됨.

 

4. Install 모듈

//nest에서 TypeORM을 사용하기 위해 연동시켜주는 모듈
@nestjs/typeorm

//TypeORM 모듈
typeorm

//postgres모듈
pg

참고 doc

https://docs.nestjs.com/techniques/database

 

5. Entity

  • @Entity() 는 클래스가 엔티티임을 나타내는데 사용됨.
  • @PrimaryGeneratedColumn()은 id가 기본키임을 나타내는데 사용됨.
  • @Column()은 열을 나타내는데 사용됨.
  • @EntityRepository()는 클래스를 사용자정의 저장소로 선언하는데 사용됨.

 

6. TypeORM 제공하는 메서드

https://typeorm.io/repository-api

 

반응형