목적 : 학습내용 정리
TypeORM이란?
TypeORM은 TypeScript로 작성된 ORM(Object-Relational Mapping) 라이브러리로, Node.js, Browser, React Native 등 다양한 플랫폼에서 사용할 수 있다.
TypeORM 특징
- TypeScript 지원: TypeORM은 TypeScript를 기본 언어로 사용하기 때문에, 타입 안정성과 가독성을 높일 수 있습니다.
- 다양한 데이터베이스 지원: TypeORM은 MySQL, PostgreSQL, SQLite, MSSQL, Oracle 등 다양한 데이터베이스를 지원합니다.
- ORM 기능 제공: TypeORM은 객체와 데이터베이스 간의 매핑을 쉽게 할 수 있도록 ORM 기능을 제공합니다. 이를 통해 객체를 데이터베이스에 저장하거나, 데이터베이스에서 객체를 가져오는 등의 작업을 쉽게 할 수 있습니다.
- 데이터 마이그레이션: TypeORM은 데이터베이스 스키마를 관리하는 도구인 마이그레이션을 제공합니다. 이를 통해 데이터베이스 스키마를 버전 관리하거나, 데이터베이스 스키마를 업데이트하는 작업을 쉽게 할 수 있습니다.
- 관계형 데이터베이스 지원: TypeORM은 관계형 데이터베이스를 다루는 데 필요한 다양한 기능을 제공합니다. 이를 통해 데이터베이스의 관계를 쉽게 설정하고, 관련된 데이터를 가져오는 작업을 쉽게 할 수 있습니다.
- Active Record 및 Data Mapper 패턴 지원: TypeORM은 Active Record 및 Data Mapper 패턴을 지원합니다. 이를 통해 객체 지향 프로그래밍을 할 때, 데이터베이스와의 상호작용을 쉽게 할 수 있습니다
Entity란?
TypeORM에서 Entity는 객체(Object)와 데이터베이스의 테이블(Table)을 매핑하는 클래스(Class)입니다. Entity는 데이터베이스 테이블의 스키마를 정의하는 역할을 합니다.
Entity 클래스는 @Entity 데코레이터를 사용하여 정의합니다. 이 데코레이터는 데이터베이스에서 해당 클래스를 어떤 테이블로 매핑할 것인지 지정하며, 해당 클래스의 속성들은 테이블의 컬럼(Column)으로 매핑됩니다.
예를 들어, User Entity 클래스를 만든다면, 이 클래스는 데이터베이스의 user 테이블과 매핑될 수 있습니다. User 클래스의 속성(예: 이름, 이메일, 비밀번호 등)은 user 테이블의 컬럼으로 매핑됩니다. 이렇게 Entity 클래스를 정의하면, TypeORM은 해당 클래스와 데이터베이스 간의 매핑을 관리하며, CRUD(Create, Read, Update, Delete) 작업 등을 쉽게 수행할 수 있게 됩니다.
Entity 클래스는 TypeORM에서 제공하는 다양한 데코레이터를 사용하여 관계형 데이터베이스의 다양한 기능을 지원할 수 있습니다. 예를 들어, @Column 데코레이터를 사용하여 컬럼의 데이터 타입, 길이, 기본값 등을 설정할 수 있으며, @OneToMany, @ManyToOne 등의 데코레이터를 사용하여 관계형 데이터베이스의 관계를 설정할 수 있습니다.
User Entity 예시
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 50 })
name: string;
@Column({ length: 100 })
email: string;
@Column()
password: string;
}
User 클래스는 @Entity 데코레이터로 테이블 매핑을 설정하고, @PrimaryGeneratedColumn 데코레이터로 id 컬럼을 설정하였습니다. name, email, password 속성은 각각 @Column 데코레이터로 컬럼 매핑을 설정하였습니다. 이렇게 Entity 클래스를 정의하면, TypeORM을 사용하여 User 테이블과 관련된 CRUD 작업 등을 쉽게 수행할 수 있습니다.
위의 글은 ChatGPT를 참고하여 작성한 글입니다.
'IT' 카테고리의 다른 글
서류 합격 후 코딩테스트 과제 후기 (1) | 2023.04.03 |
---|---|
Social login 중복되는 API 통합 (0) | 2023.03.25 |
[Docker] Error: connect ECONNREFUSED 0.0.0.0:3306 (0) | 2023.03.11 |
[공부 정리] Class & OOP & Design Pattern (0) | 2023.03.06 |
데이터 타입에 따른 저장 방식 (0) | 2023.03.03 |