⚡ TypeORM의 데코레이터?
TypeORM에서 쓸 수 있는 데코레이터에 대해 알아보자.
@Entity
데이터베이스 테이블을 정의하기 전에 실행해야 하는 데코레이터. 이 데코레이터는 각종 옵션을 사용할 수 있는데, 이중 name 옵션은 테이블명을 따로 지정하지 않아도 클래스명으로 매핑하지만, 테이블명을 지정할 수 있다.
@Entity({ name: 'user' }) // name 옵션을 이용해 테이블 이름을 명시할 수 있다.
export class UserEntity {}
name의 재밌는 점은, @Entity 뿐 아니라 @JoinColumn에도 사용이 가능한데,
컬럼 이름과 이미 존재하는 Entity 속성의 이름이 같으면 덮어쓰기 기능처럼 쓸 수 있다.
옵션 | 용도 |
name | 테이블 이름. 지정하지 않으면 테이블 이름은 엔티티 클래스명으로 생성됨 |
database | 선택된 DB서버의 데이터베이스 이름 |
schema | 스키마 이름 |
engine | 테이블 생성 중에 설정할 수 있는 DB엔진 이름 |
synchronize | false로 설정할 시 스키머 싱크를 건너뜀 |
orderBy | QueryBuilder과 find를 실행할 때 엔티티의 기본순서를 지정함 |
@Column의 옵션
Column은 Entity의 속성을 테이블 컬럼으로 만들어주는 데코레이터이다. 이 중에는 다음과 같은 옵션도 사용이 가능하다.
옵션 | 값 | 용도 |
unique | boolean | 해당 컬럼의 값이 고유한 값을 가져야하는 지 여부를 판별할 수 있다. 속성값으로 사용가능한 unique는 해당 값의 중복을 막아줌으로써 제약을 걸 수 있다. |
unsigned | boolean | unsigned 숫자열에 속성을 넣는다. MySQL에서만 사용할 수 있다. |
length | number | javascript의 원시 타입들을 세분화해서 사용하기 위해 type 옵션과 같이 사용할 수 있다. |
onUpdate | string | cascading을 하기 위한 옵션으로 ON UPDATE 트리거 |
nullable | boolean | 컬럼을 NULL이나 NOT NULL로 만드는 옵션 |
default | string | 컬럼에 DEFAULT 값을 추가 |
enum | string[] || AnyEnum | 컬럼의 값으로 enum을 사용할 수 있다. enum은 DB 단에서 처리할 수도, ORM 단에서도 처리할 수도 있다. |
@Entity({ name: 'user' })
export class UserEntity {
@Column({ unique: true, nullable: true })
title: string
}
참조 : https://yangeok.github.io/orm/2020/12/14/typeorm-decorators.html
Yangeok
Yangwook Ian Jeongs' Development Blog
yangeok.github.io
참조 : https://overcome-the-limits.tistory.com/624
[TypeORM] Column 데코레이터
들어가며 TypeORM에 대해 아무런 지식이 없습니다. 하지만 NestJS로 개발을 하려면, TypeORM에 대한 깊은 이해가 필요하겠다고 생각했습니다. 잘 모르지만, 삽질해가면서 TypeORM에 대해 공부해보고자
overcome-the-limits.tistory.com
'📖 TIL' 카테고리의 다른 글
[TIL] Class-Validator란? (0) | 2022.08.19 |
---|