본문 바로가기

[TypeORM] TypeORM의 데코레이터

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