TypeOrm Entity

Create TypeOrm Entity

엔티티는 데이터베이스 테이블에 매핑되는 클래스 입니다. 새로운 클래스를 정의하고 @Entitiy() 표시로 엔티티를 생성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column()
firstName: string;

@Column()
lastName: string;

@Column()
isActive: boolean;

}

기본 엔티티는 열과 관계로 구성된다.

각 엔티티는 반드시 주 열을 가져야 하며 각각 연결 옵션에 등록을 해주어야한다.

1
2
3
4
5
6
7
8
9
10
11
12
import {createConnection, Connection} from "typeorm";
import {User} from "./entity/User";

const connection: Connection = await createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
entities: [User]
});

enttities 에 엔티티를 모두 넣어주는 방식과 엔티티의 전체 디렉토리 경로를 넣어 줄 수도 있다.

1
2
3
4
5
6
7
8
9
10
11
import {createConnection, Connection} from "typeorm";

const connection: Connection = await createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
entities: ["entity/*.js"]
});

데이터 베이스 테이블은 열로 구성되었기 때문에 엔티티도 동일하게 열로 구성을 해주어야 한다.

PrimaryColumn

엔티티에는 하나 이상의 기본 열이 있어야 한다.

@PrimaryColumn()모든 유형의 값을 취하는 기본 열을 만든다. 열 유형을 지정할 수 있고. 열 유형을 지정하지 않으면 속성 유형에서 유추 된다. 아래 예제는 int저장하기 전에 수동으로 할당 해야 하는 형식으로 id를 생성 한다.

1
2
3
4
5
6
7
8
9
import {Entity, PrimaryColumn} from "typeorm";

@Entity()
export class User {

@PrimaryColumn()
id: number;

}

@PrimaryGeneratedColumn()값이 자동 증가 값으로 자동 생성되는 기본 열을 만든다.

1
2
3
4
5
6
7
8
9
import {Entity, PrimaryGeneratedColumn} from "typeorm";

@Entity()
export class User {
// auto
@PrimaryGeneratedColumn()
id: number;

}

@PrimaryGeneratedColumn(“uuid”)를 사용하여 값이 자동으로 생성되는 기본 열을 만든다. 이는 고유한 문자열이다.

1
2
3
4
5
6
7
8
9
import {Entity, PrimaryGeneratedColumn} from "typeorm";

@Entity()
export class User {

@PrimaryGeneratedColumn("uuid")
id: string;

}

특정 조건 컬럼

  • @CreateDateColumn엔티티의 삽입 날짜로 자동 설정되는 특수 열
  • @UpdateDateColumnsave엔티티 관리자 또는 저장소 를 호출 할 때마다 엔티티의 업데이트 시간으로 자동 설정되는 특수 열
  • @DeleteDateColumn엔티티 관리자 또는 저장소의 일시 삭제를 호출 할 때마다 엔티티 삭제 시간에 자동으로 설정되는 특수 열
  • @VersionColumn엔티티 관리자 또는 저장소를 호출 할 때마다 엔티티의 버전으로 자동 설정되는 특수 열

컬럼 유형

첫 번째 매개 변수로 @Column 또는의 열 옵션에서 열 유형을 지정할 수 있다.

1
2
@Column("int")

or

1
@Column({ type: "int" })

enum 유형

typescript 열거 형 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
export enum UserRole {
ADMIN = "admin",
EDITOR = "editor",
GHOST = "ghost"
}

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column({
type: "enum",
enum: UserRole,
default: UserRole.GHOST
})
role: UserRole

}

열거 형 값과 함께 배열 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export type UserRoleType = "admin" | "editor" | "ghost",

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column({
type: "enum",
enum: ["admin", "editor", "ghost"],
default: "ghost"
})
role: UserRoleType
}

열 옵션

  • type: ColumnType컬럼 유형. 위에 나열된 유형 중 하나입니다 .
  • name: string데이터베이스 테이블의 열 이름. 기본적으로 열 이름은 속성 이름에서 생성됩니다. 자신의 이름을 지정하여 변경할 수 있습니다.
  • length: number컬럼 유형의 길이. 예를 들어 varchar(150)유형 을 작성 하려면 열 유형 및 길이 옵션을 지정하십시오.
  • width: number열 유형의 표시 너비. MySQL 정수 유형 에만 사용
  • onUpdate: string``ON UPDATE방아쇠. MySQL 에서만 사용됩니다 .
  • nullable: boolean컬럼 NULL또는 NOT NULL데이터베이스를 만듭니다 . 기본적으로 열은 nullable: false입니다.
  • update: boolean“save”조작으로 컬럼 값이 갱신되는지 여부를 나타냅니다. false 인 경우 개체를 처음 삽입 할 때만이 값을 쓸 수 있습니다. 기본값은 true입니다.
  • insert: boolean개체를 처음 삽입 할 때 열 값이 설정되었는지 여부를 나타냅니다. 기본값은 true입니다.
  • select: boolean질의를 할 때 기본적으로이 열을 숨길 지 여부를 정의합니다. 로 설정 false하면 열 데이터가 표준 쿼리와 함께 표시되지 않습니다. 기본적으로 열은select: true
  • default: string데이터베이스 레벨 컬럼의 DEFAULT값을 추가합니다 .
  • primary: boolean열을 기본으로 표시합니다. 당신이 사용하는 경우 동일합니다 @PrimaryColumn.
  • unique: boolean -열을 고유 한 열로 표시 (고유 제약 조건 생성).
  • comment: string데이터베이스의 열 주석. 모든 데이터베이스 유형에서 지원되지는 않습니다.
  • precision: number10 진수 (정확한 숫자) 열의 정밀도 (10 진수 열에 만 적용됨)는 값에 대해 저장되는 최대 자릿수입니다. 일부 열 유형에서 사용됩니다.
  • scale: number소수점 오른쪽의 자릿수를 나타내며 정밀도보다 클 수없는 소수점 (정확한 숫자) 열 (10 진수 열에 만 적용됨)의 스케일입니다. 일부 열 유형에서 사용됩니다.
  • zerofill: boolean``ZEROFILL숫자 열에 속성을 넣습니다 . MySQL에서만 사용됩니다. 인 경우 trueMySQL UNSIGNED은이 열에 속성을 자동으로 추가합니다 .
  • unsigned: boolean``UNSIGNED숫자 열에 속성을 넣습니다 . MySQL에서만 사용됩니다.
  • charset: string열 문자 집합을 정의합니다. 모든 데이터베이스 유형에서 지원되지는 않습니다.
  • collation: string -열 데이터 정렬을 정의합니다.
  • enum: string[]|AnyEnum``enum허용되는 열거 형 값 목록을 지정하기 위해 열 유형에 사용됩니다. 값 배열을 지정하거나 열거 형 클래스를 지정할 수 있습니다.
  • enumName: string -사용 된 열거 형의 이름을 정의합니다.
  • asExpression: string생성 된 컬럼 표현식. MySQL 에서만 사용됩니다 .
  • generatedType: “VIRTUAL”|”STORED”생성 된 컬럼 유형. MySQL 에서만 사용됩니다 .
  • hstoreType: “object”|”string”``HSTORE열의 유형을 반환합니다 . 값을 문자열 또는 객체로 반환합니다. Postgres 에서만 사용됩니다 .
  • array: boolean -배열이 될 수있는 postgres 및 cockroachdb 열 유형에 사용됩니다 (예 : int []).
Author

han Ju Ryeon

Posted on

2021-09-09

Updated on

2021-12-05

Licensed under

댓글