반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Nestjs
- 크롤링
- 알고리즘
- 쉬운 문제
- HTTP
- Algorithm
- 프로그래머스
- socket
- dp
- 프로그래머스 레벨 2
- 타입 챌린지
- Crawling
- 백준
- 레벨 1
- BFS
- 자바스크립트
- javascript
- 문자열
- type challenge
- 소켓
- TCP
- ip
- typescript
- HTTP 완벽 가이드
- 수학
- 그래프
- 가천대
- dfs
- Node.js
- 타입스크립트
Archives
- Today
- Total
kakasoo
TypeORM에서의 명시적인 제약조건 이름 선언 본문
반응형
issue number #8524에서 JoinColumn에서의 제약 조건 이름을 추가하는 법이 추가되었습니다.
이 내용은, 기존의 방식처럼 Entity 위에 @index() 데코레이터를 통해 제약조건을 거는 것보다 명시적입니다.
인덱스 데코레이터의 경우에는 하나의 데코레이터를 이용해 Primary와 복합키, 외래키 등을 모두 표현했습니다.
따라서 그 의미가 무엇을 뜻하는지는 인덱스 데코레이터와 엔티티 칼럼과의 관계를 보고 이해해야 했습니다.
issue number #8900에서는 위의 변화와 더불어 Column 데코레이터에서도 제약조건 명시를 허용했습니다.
새로이 명시된 방법은 아래와 같습니다.
@Entity()
export class Post {
@ManyToOne((type) => Category)
@JoinColumn({
name: "cat_id",
referencedColumnName: "name",
foreignKeyConstraintName: "fk_cat_id"
})
category: Category
}
@Entity()
export class Post {
@ManyToMany((type) => Category)
@JoinTable({
name: "question_categories",
joinColumn: {
name: "question",
referencedColumnName: "id",
foreignKeyConstraintName: "fk_question_categories_questionId"
},
inverseJoinColumn: {
name: "category",
referencedColumnName: "id",
foreignKeyConstraintName: "fk_question_categories_categoryId"
},
})
categories: Category[]
}
JoinColumn과 JoinTable에서는 위처럼 명시할 수 있게 되었습니다.
이렇게 명시함으로써 엔티티 간의 관계가 어떤 제약조건으로 연결되어 있는지를 한 눈에 확인할 수 있게 됐습니다.
엔티티 간의 관계가 아니라, 단일 엔티티 내에서의 제약 조건은 다시 아래와 같이 표현 가능해졌습니다.
@Entity()
export class User {
@PrimaryColumn({ primaryKeyConstraintName: "pk_user_id" })
id: number
}
@Entity()
export class User {
@Column({ primary: true, primaryKeyConstraintName: "pk_user_id" })
id: number
}
@Entity()
export class User {
@PrimaryGeneratedColumn({ primaryKeyConstraintName: "pk_user_id" })
id: number
}
두 방식 모두, 명시적으로 선언 가능할 뿐만 아니라 커스텀한 제약 조건 이름을 넣을 수 있습니다.
이 내용들은 TypeORM 0.3.7 이상의 버전에서 사용 가능합니다.
반응형
'프로그래밍 > NestJS' 카테고리의 다른 글
쿼리빌더를 "조금" 더 완벽하게 해줄 setFindOptions (0) | 2022.09.12 |
---|---|
Repository 패턴에서 조인 대상이 Null인 경우에 대한 체크 (0) | 2022.09.12 |
Module, Controller, Service, Repository (0) | 2022.07.17 |
TypeORM Repository와 ManyToMany (0) | 2022.07.17 |
Nest.js에 ConfigModule 설정 (0) | 2022.07.17 |