본문 바로가기

NEW(스크립트용)

entity cascade

  • ManyToOne, OneToMany

—> 이 릴레이션은 쌍으로 쓰게 되어 있는데, ManyToOne 데코레이션을 쓰는 쪽에 ForeignKey가 생성된다. 보통 OneToMany 데코를 쓰는 쪽이 부모(주체)가 되고 ManyToOne 데코를 쓰는 쪽이 자식(객체)가 된다.

ex) Author(글쓴이): OneToMany , Posting(글): ManyToOne

  • 한 글쓴이는 자신의 아이디로 많은 글을 올릴수 있지만(Posting), 한 포스팅 아이디는 (글을 나눠서 공동으로 쓰지 않는한) 한 글쓴이로 밖에 매핑이 안된다.
  • JoinColumn은 객체쪽에서 지정을 해준다.
  • CASCADE 옵션을 줄때는, 객체 쪽(Posting)에 { onDelete: “CASCADE”}, 주체 쪽(Author)에 {cascade:true} 를 준다. 부모가 삭제 될때 자식이 삭제되는거지, 자식이 삭제되는건 부모에 아무 영향을 안끼친다.

ex)

@Entity()
class Book extends BaseEntity {
    @ManyToOne(() => Author, (author) => author.books, {
        onDelete: 'CASCADE',
    })
    public author?: Author
}

@Entity()
class Author extends BaseEntity {
    @OneToMany(() => Book, (book) => book.author, {
        cascade: true,
    })
    public books: Book[];
}

ex) 

Author > Posting > Reply 

위처럼 객체가 여러개 일경우에는 최상위 주체에만 {onDelete:'CASCADE'}