엔티티에 대해 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 함수를 사용한다.