데이터베이스 테이블에 매핑되는 클래스이다.
별도의 클래스에 @Entity() 로 선언하여 매핑 내용을 정의한다. 
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number;
    @Column()
    firstName: string;
    @Column()
    lastName: string;
    @Column()
    isActive: boolean;
}위의 Entity파일은 db 아래 테이블에 매핑될것이다.
+-------------+--------------+----------------------------+
|                          user                           |
+-------------+--------------+----------------------------+
| id          | int(11)      | PRIMARY KEY AUTO_INCREMENT |
| firstName   | varchar(255) |                            |
| lastName    | varchar(255) |                            |
| isActive    | boolean      |                            |
+-------------+--------------+----------------------------+Connection에 작성한 Entity(사용될 테이블-매핑)를 모두 등록해야 한다.
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]
});아에 디렉토리 루트를 설정하여 모든 Entity를 등록할수있다.
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"]
});@Entity(테이블이름) 인자로써 작성한 내용은 migration시에 테이블의 이름으로 정의되는 듯?? 그렇다면 해당 클래스의 클래스 명은??
각 Entity는 적어도 하나의 primary column을 보유해야한다.
primary column에는 여러가지 종류가있다.
1️⃣ primary column()
모든 유형의 값을 취급하는 column을 생성한다.
컬럼 속성을 지정하지 않으면 속성값을 유추하여 자동으로 지정된다. 
import {Entity, PrimaryColumn} from "typeorm";
@Entity()
export class User {
    @PrimaryColumn()
    id: number;
}2️⃣ PrimaryGeneratedColumn()
자동 증가값이 적용되는 컬럼이다. 시퀀스로 활용된다. 
import {Entity, PrimaryGeneratedColumn} from "typeorm";
@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number;
}3️⃣ PrimaryGeneratedColumn(인자값)
인자값으로 작성한 텍스트가 열 추가시 자동으로 생성된다. 
import {Entity, PrimaryGeneratedColumn} from "typeorm";
@Entity()
export class User {
    @PrimaryGeneratedColumn("uuid")
    id: string;
}테이블의 컬럼 타입은 @Column(자료형)으로 지정할 수 있다. 
@Column("int")
// or
@Column({ type: "int" })옵션값을 부여할 수 있다.
@Column("varchar", { length: 200 })
// or
@Column({ type: "int", width: 200 })
// example
@Column({ default: false })
  noDelivery: boolean;mysql에서 eunm 타입의 컬럼을 지원한다.
아래와 같이 열 정의가 가능하다.
일반 컬럼은 특정 자료형을 취급한다. enum타입이란 값들을 보유한 객체를 자료형으로 취급한다. 
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
}enum타입은 객체 뿐 아니라 열거형으로 정의한 자료형들도 포함된다.
아래와 같이 사용한다. 
export type UserRoleType = "admin" | "editor" | "ghost",
@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number;
    @Column({
        type: "enum",
        enum: ["admin", "editor", "ghost"],
        default: "ghost"
    })
    role: UserRoleType
}이때 인자는 uuid / increament와 같은 값이 들어간다.
uuid는 고유한 값을 다루기 위한 컬럼의 속성으로 활용된다고 이해하자. 
@Entity()
export class User {
    @PrimaryColumn()
    id: number;
    @Column()
    @Generated("uuid")
    uuid: string;
}type을 포함한 컬럼의 옵션들을 객체로 다루어 생성할 수 있다.
@Column({
    type: "varchar",
    length: 150,
    unique: true,
    // ...
})
name: string;엔티티의 상속을 활용하여 코드의 중복을 줄일 수 있다.
export abstract class Content {
    @PrimaryGeneratedColumn()
    id: number;
    @Column()
    title: string;
    @Column()
    description: string;
}
@Entity()
export class Photo extends Content {
    @Column()
    size: string;
}