DAO (Data Access Object)
DAO는 데이터베이스와의 상호작용을 캡슐화하는 디자인 패턴입니다.
데이터베이스 관련 코드와 비즈니스 로직을 분리하여 유지보수를 쉽게 하며 CRUD 연산을 담당하는 계층을 맗바니다.
사용하는 이유
데이터베이스 의존성을 줄이고 코드의 모듈화를 강화
ORM(Object-Relational Mapping)과 함께 사용하면 생산성 증가
테스트가 용이하며, 데이터 접근 방식을 쉽게 변경 가능
여러 서비스에서 같은 DAO를 재사용 가능
구현 예시
인터페이스 DTO 설계
1 2 3 4 5
export interface IUser { id: number; name: string; email: string; }
DAO 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
import { IUser } from "./IUser"; class UserDAO { private users: IUser[] = []; // 유저 생성 create(user: IUser): void { this.users.push(user); } // 유저 조회 findById(id: number): IUser | undefined { return this.users.find((user) => user.id === id); } // 모든 유저 조회 findAll(): IUser[] { return this.users; } // 유저 삭제 delete(id: number): void { this.users = this.users.filter((user) => user.id !== id); } } export default UserDAO;