Home DAO (Data Access Object)
Post
X

DAO (Data Access Object)

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;
    
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.