Entity Lifecycle Hook

rabbit jack·2025년 6월 24일

TypeORM

목록 보기
2/3

엔티티에 대해 softRemove() 또는 remove()를 사용할 경우, 삭제 전후에 작업을 수행하는 hook이 동작한다.

@Entity()
export class Review {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  content: string;

  @DeleteDateColumn()
  deletedAt?: Date;

  @BeforeRemove()
  beforeRemove() {
    console.log('리뷰 삭제 직전 로직 실행');
  }

  @AfterRemove()
  afterRemove() {
    console.log('리뷰 삭제 후 로직 실행');
  }
}

작동 조건

삭제 방식Hook 작동 여부
remove()✅ 작동함
softRemove()✅ 작동함
delete()❌ 작동안함
softDelete()❌ 작동안함
  • remove() / softRemove()는 엔티티 인스턴스를 로드한 후 삭제하므로, hook이 작동한다.

  • delete() / softDelete()는 조건만 지정하므로 hook이 작동하지 않는다.

결론

  • 삭제시 로깅, 연결 데이터 처리 등이 필요하다면 remove + hook 조합을 사용한다.
  • 성능이 중요하다면 delete 함수를 사용한다.

0개의 댓글