NestJS entity의 Relations

커피 내리는 그냥 사람·2021년 4월 19일
0

기업협업 인턴십

목록 보기
10/16

NestJS entity의 Relations 정리

참고 링크

entity는 일종의 django의 모델, 테이블과 비슷한 개념이라 볼 수 있는데 마찬가지로 데이터베이스 간의 관계를 정리하면 이렇게 3가지가 있다.

1. 관계

1. one to one

PK를 가지고 있는 테이블 안에서 하나의 row data가 다른 테이블의 row data와 1:1 관계를 맺고 있을 때.

2. one to many

PK를 가지고 있는 테이블 안에서 하나의 row data가 다른 테이블의 row data와 1:다 관계를 맺고 있을 때.

3. many to many

PK를 가지고 있는 테이블 안에서 하나의 row data가 다른 테이블의 row data와 다:다 관계를 맺고 있을 때.

공통적으로 FK로 관계를 맺는다. 이는 django 모델링과 비슷한 개념이다.

4. django와 큰 차이

1:N의 경우 각 엔티티에

@OneToMany(type => Photo, photo => photo.user)
  photos: Photo[]
  @ManyToOne(type => User, user => user.photos)
  @JoinColumn({ name: 'ref_userId' }
  user: User;

이와 같이 적어주는데 django의 경우 한 방향으로만 ManyToMany로 한 번에 연결하는데 TypeORM으로는 양쪽으로 관계를 맺어준다. N:1이라는 것은 생경했다.

2. Transaction

1. typeorm에서 transactions가 사용되는 이유

2. 플로우

  1. autoCommit = false 로 설정함
  2. 서로 다른 트랜잭션을 부분적으로 처리한다.
  3. 만약, 모든 트랜잭션이 정상적으로 완료되었 을 때는 Commit 을 한다.
  4. 만약, 트랜잭션 중 하나의 트랜잭션이 비정상적으로 처리되면 Rollback 을 수행한다.

3. 트랜잭션 처리법

  • @Transactional 선언
  • 콜백 스타일
  • queryRunner : 지향하는 바
profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글