-
Notifications
You must be signed in to change notification settings - Fork 2
Dto 메서드 전략
GWANGHYEON KIM edited this page Dec 3, 2024
·
1 revision
- 용도: DTO → Entity 변환
-
특징:
- 주로 요청 DTO에서 사용
- 새로운 엔티티 생성 시 활용
export class SigninDto {
email: string;
name: string;
toMember() {
const member = new Member();
member.email = this.email;
member.name = this.name;
return member;
}
}
- 용도: Entity → DTO 변환
-
특징:
- 주로 응답 DTO에서 사용
- 정적 메서드로 구현
- 단일/복수 변환 지원
export class BookmarkDto {
bookmarkId: number;
name: string;
static from(bookmark: Bookmark) {
const dto = new BookmarkDto();
dto.bookmarkId = bookmark.id;
dto.name = bookmark.name;
return dto;
}
static fromList(bookmarks: Bookmark[]) {
return bookmarks.map(bookmark => this.from(bookmark));
}
}
- 용도: 다중 소스 → DTO 변환
-
특징:
- 여러 데이터를 조합하여 DTO 생성
- 복잡한 변환 로직 포함 가능
- 부가적인 데이터 처리 가능
export class AttendanceResponseDto {
memberId: number;
attendances: AttendanceInfo[];
static of(memberId: number, attendances: Attendance[]) {
const dto = new AttendanceResponseDto();
dto.memberId = memberId;
dto.attendances = attendances.map(/* 변환 로직 */);
return dto;
}
}
-
toEntity()
- 새로운 엔티티 생성이 필요할 때
- 클라이언트 요청 데이터를 엔티티로 변환할 때
-
from()
- 엔티티를 클라이언트 응답용 DTO로 변환할 때
- 단순 매핑이 필요한 경우
-
of()
- 여러 데이터 소스를 조합해야 할 때
- 복잡한 변환 로직이 필요한 경우
- 추가적인 데이터 처리가 필요한 경우
- 일관된 네이밍 컨벤션 유지
- 변환 로직의 응집도 유지
- 필요한 경우 여러 패턴 조합 사용
- 타입 안정성 보장
- 명확한 책임 분리
- Mediasoup 포트 매핑 문제
- swagger 같은 응답 코드에 다양한 응답 보여주기
- Sudo가 계속 비밀번호를 요청함
- Docker 이미지가 너무 크다
- Git action에서 도커 이미지 빌드 시간을 단축시켜보자
- Docker compose를 이용해서 메모리 사용률을 줄여보자
- 방송 녹화 시 CPU 과부하 문제를 해결해보자
- Release 브랜치? 너 필요해?
- 로딩이 너무 짧아…!
- NestJS ORM으로 무엇을 사용해야 할까?
- WebRTC를 이용한 1:N 스트리밍 서비스에서 시그널링 서버가 필요할까?
- 실시간 채팅 구현: 인메모리 방식을 선택한 이유
- MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
- 브라우저 창이 최소화되면 비디오 송출이 안된다…!
- Mediasoup 기본 개념
- DLTS와 Signaling
- Tell, Don't Ask (TDA) 원칙이란
- VPC(Virtual Private Cloud) 학습 정리
- 순환참조: A 서비스 ‐ B 서비스 vs. A 서비스 ‐ B 레포지토리
- Dto 메서드 전략
- WebRTC란?
- 자바스크립트 패키지 매니저(npm, yarn, pnpm)
- shadcn/ui을 이용해 UI 개발 생산성 높이기
- React 이벤트 핸들러 네이밍(on vs handle)
- React-router-dom의 createBrowserRouter을 사용해보기
- fetch vs axios