개요
nestjs를 공부하면서 entity를 사용하는 경우와 interface를 사용하여 유효성검사를 하는 2가지 방식이 혼재되어 있었다
어떤경우에 뭘 적절히 써야 될까.. 라는 고민에서 시작된 글!
Interface
- 인터페이스는 TypeScript에서 사용되는 개념으로, 객체의 형태를 정의하는 데 사용됩니다.
- 주로 데이터의 구조와 유형을 설명하는 데 사용되며, 클래스가 아니므로 메서드 구현이나 생성자 등을 가질 수 없습니다.
- 인터페이스는 컴파일 시간에만 존재하며, 런타임에서는 변환되거나 사용되지 않습니다.
- 주로 DTO(Data Transfer Object) 등의 데이터 전송 객체나 입력/출력 유효성 검사를 위해 사용됩니다.
- 인터페이스를 사용하면 코드의 재사용성과 가독성을 높일 수 있습니다.
Entity
- 엔티티는 데이터베이스와 관련된 모델을 정의하는 데 사용됩니다.
- 주로 TypeORM이나 Sequelize 등의 ORM(Object-Relational Mapping)을 사용할 때 엔티티 클래스를 생성합니다.
- 엔티티 클래스는 데이터베이스 테이블과 매핑되며, 데이터베이스에서 데이터를 읽거나 쓰기 위한 메서드를 가질 수 있습니다.
- 엔티티 클래스는 데이터베이스에서 직접 사용되므로 런타임 시에 존재하며, 데이터베이스 스키마와 일치해야 합니다.
- 주로 데이터베이스 조작(CRUD)이나 비즈니스 로직을 처리하는 데 사용됩니다.
정리
결국 프로그램실행하는 동안 무언가와 상호작용 또는 조작을 하기위해서는 class로 만든 entity를 사용해야 하고 객체의 형태를 정의 또는 입력/출력에 대한 유효성 검사는 interface를 사용한다