본문 바로가기
DB/typeORM

엔티티(Entity)란 무엇인가?

by 싯벨트 2022. 12. 10.
728x90

참고자료

https://typeorm.io/entities#what-is-entity

 

#엔티티

엔티티는 데이터베이스 테이블에 매핑되는 클래스다.

@Entity() 데코레이터를 통해 구현 가능하다.
@PrimaryColumn 또는 @PrimaryGeneratedColumn을 통해 primary key를 설정해줘야 한다.
- @PrimaryGeneratedColumn("uuid") - id 로 uuid 자동 생성
- 2개도 가능
- 만약 테이블 컬럼명이 id, ids 라면 create 진행 시 id,ids를 입력해주면 upsert 기능 자동 구현

엔티티를 사용하려면 데이터소스에 등록해줘야 한다.
- 혹은 엔티티를 모아놓은 폴더 자체를 등록할 수도 있다.

@Entity() 괄호 내부에 따옴표로 원하는 이름을 설정할 수 있다.
db 테이블에 prefix를 설정하고 싶다면 소스 옵션으로 entityPrefix를 설정할 수 있다.
엔티티의 인스턴스는 db가 로딩될 때 형성되므로, 엔티티 클래스의 생성자는 선택적이어야 한다.
findOneBy 메서드로 컬럼과 값의 리터럴 객체로 찾을 수 있다.

#special columns

데이터 생성, 갱신, 삭제 날짜 관련 컬럼

@CreateDateColumn() - 데이터 생성 날짜 자동 기록
@UpdateDateColumn() - 데이터 갱신(save 메서드) 날짜 자동 기록
@DeleteDateColumn() - soft-delete 메서드 진행 시 삭제 날짜 자동 기록

  • 삭제되면 날짜가 생성되며, find 옵션에서 제외된다.

@VersionColumn() - save 할 때마다 버전 갱신하여 기록


#Column Types

다양한 형태로 컬럼 타입 지정 가능


#enum 타입 컬럼 설정

아싸리 enum을 넣어버리거나 / enum 자리에 텍스트 배열을 넣거나
type이 다양한 enum도 가능(number, string ..)

#set 타입 컬럼 설정

enum들의 세트 설정


#simple-array 타입 컬럼


#simple-json 타입 컬럼

JSON.stringify를 통해 db에 저장됨
(키값에도 쌍따옴표가 붙어서 저장됨)


#컬럼 데코레이터 내부에 쓸 수 있는 컬럼 옵션들!!

@Column({옵션1:값1, 옵션2:값2 ...})

  • type: ColumnType(db에서 가능한 타입)
  • name: string - db 테이블에 표기할 컬럼명 기본값은 엔티티의 속성 이름과 동일
  • length: number - 컬럼 타입의 길이
  • width: number - 컬럼 타입의 보여지는 너비(정수로만 표기)
  • onUpdate: string - 업데이트 트리거
  • nullable: boolean - null 가능 여부(기본값은 false)
  • update: boolean - 업데이트 허용 여부(기본값은 true 이며, false인 경우 처음 생성만 가능)
  • insert: boolean - 개체 처음 삽입 시 열값 설정 여부(기본값은 true) (삽입을 막는건가..? - 약간 readonly 느낌 같은데)
  • select: boolean - 쿼리 반영 여부(기본값 true)
  • default: string - 기본값 설정
  • primary: boolean - 고유키 설정 @PrimaryColumn데코를 사용하는 것과 동일함
  • unique: boolean - 컬럼 내부 값들 유니크 제한 설정 여부
  • comment: string - 코멘트 설정.
  • precision: number -10진수 컬럼에 대한 정밀도
  • scale: number - 10진수의 소수점 설정. 정밀도보다 클 수 없다.
  • zerofill: boolean - 숫자 컬럼에 ZEROFILL 속성 부여. db 컬럼에 자동으로 unsigned 속성 부여(unsigned - 음수를 차치하고 양수 범위 2배 )
  • unsigned: boolean - 숫자 컬럼에 UNSIGNED속성 부여
  • charset: string - 문자 형식(character set)정의
  • collation: string - 열 조합 정의
  • enum: string[]|AnyEnum - enum컬럼에 리스트로 들어갈 값 구체화
  • enumName: string - enum 이름 정의
  • asExpression: string - 컬럼 표현 생성
  • generatedType: "VIRTUAL"|"STORED" - 컬럼타입 생성
  • hstoreType: "object"|"string" - HSTORE 컬럼 타입 빈환

엔티티도 클래스이기 때문에 extends를 사용해서 공통인 속성들 상속 가능