엔티티 리스너(Listener)
엔티티 리스너는 엔티티의 상태 변화와 관련된 이벤트를 감지하는 메서드를 포함한다. 이러한 메서드는 엔티티의 @Entity() 데코레이터로 정의된 클래스 내에서 구현할 수 있으며, 엔티티의 생명주기 이벤트가 발생할 때 자동으로 호출된다.
주요 이벤트
- @BeforeInsert(): 엔티티가 데이터베이스에 삽입되기 전에 호출
- @AfterInsert(): 엔티티가 데이터베이스에 삽입된 후 호출
- @BeforeUpdate(): 엔티티가 업데이트되기 전에 호출
- @AfterUpdate(): 엔티티가 업데이트된 후 호출
- @BeforeRemove(): 엔티티가 삭제되기 전에 호출
- @AfterRemove(): 엔티티가 삭제된 후 호출
리스너 메서드 정의
import { Entity, PrimaryGeneratedColumn, Column, BeforeInsert, AfterInsert, BeforeUpdate, AfterUpdate, BeforeRemove, AfterRemove } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
age: number;
// 엔티티가 삽입되기 전에 호출되는 리스너 메서드
@BeforeInsert()
beforeInsert() {
console.log('Before inserting User entity');
// 추가적인 로직을 여기에 구현
}
// 엔티티가 삽입된 후 호출되는 리스너 메서드
@AfterInsert()
afterInsert() {
console.log('After inserting User entity');
// 추가적인 로직을 여기에 구현
}
// 엔티티가 업데이트되기 전에 호출되는 리스너 메서드
@BeforeUpdate()
beforeUpdate() {
console.log('Before updating User entity');
// 추가적인 로직을 여기에 구현
}
// 엔티티가 업데이트된 후 호출되는 리스너 메서드
@AfterUpdate()
afterUpdate() {
console.log('After updating User entity');
// 추가적인 로직을 여기에 구현
}
// 엔티티가 삭제되기 전에 호출되는 리스너 메서드
@BeforeRemove()
beforeRemove() {
console.log('Before removing User entity');
// 추가적인 로직을 여기에 구현
}
// 엔티티가 삭제된 후 호출되는 리스너 메서드
@AfterRemove()
afterRemove() {
console.log('After removing User entity');
// 추가적인 로직을 여기에 구현
}
}
설명
- @BeforeInsert(): 엔티티가 데이터베이스에 삽입되기 전에 호출
예를 들어, 필드 값의 유효성 검사를 수행하거나 기본값을 설정할 수 있다. - @AfterInsert(): 엔티티가 데이터베이스에 삽입된 후 호출
예를 들어, 삽입 후의 후처리 작업이나 로그 기록을 할 수 있다. - @BeforeUpdate(): 엔티티가 업데이트되기 전에 호출
예를 들어, 업데이트 전의 상태를 기록하거나 특정 필드를 검증할 수 있다. - @AfterUpdate(): 엔티티가 업데이트된 후 호출
예를 들어, 업데이트 후의 후처리 작업이나 상태 업데이트를 수행할 수 있다. - @BeforeRemove(): 엔티티가 삭제되기 전에 호출
예를 들어, 삭제 전의 상태를 기록하거나 관련된 데이터 정리를 할 수 있다. - @AfterRemove(): 엔티티가 삭제된 후 호출
예를 들어, 삭제 후의 후처리 작업이나 로그 기록을 수행할 수 있다.
'Database > TypeORM' 카테고리의 다른 글
EntityRepository - deprecated 되었다. (0) | 2024.08.02 |
---|---|
TypeORM의 Entity (0) | 2024.07.29 |
TypeORM에서 제공하는 특별한 데코레이터 , 엔티티의 생성 및 수정 일자를 자동으로 관리 (0) | 2024.07.29 |
TypeORM의 데이터 접근 패턴 - Data Mapper, Active Record (0) | 2024.07.29 |
TypeORM 이란 (0) | 2024.07.29 |