DTO & DAO & VO

소프트웨어 마에스트로 14기 팀 프로젝트에서 나는 백엔드 파트를 담당하여 Spring Boot를 통한 WAS 서버 개발을 하게 되었다. WAS 서버를 개발하던 도중 DAO, DTO, VO 각각의 차이에 대해 이해하고 싶어졌고, 이를 위해 학습 차 게시글을 작성하게 되었다.


DTO(Data Transfer Object)

  • 데이터를 객체의 형태로 전달하는 역할을 하는 객체
  • 계층 간 데이터 교환을 위한 Java Beans를 의미
  • 로직을 가지고 있지 않은 순수한 데이터 객체
  • getter, setter 메소드만을 가진 클래스를 의미

DAO(Data Access Object)

  • 데이터베이스의 데이터에 접근하는 객체
  • 데이터베이스를 사용해 데이터를 조회하거나 조작하는 기능을 전담
  • SQL 쿼리를 사용해 데이터를 저장하거나 수정, 삭제하는 등의 역할을 담당
  • 데이터 접근 로직과 비즈니스 로직을 분리할 수 있음

VO(Value Object)

  • 값 객체라는 의미를 가지며, 비즈니스 도메인 내에서 사용되는 객체를 의미
  • 데이터 그 자체를 의미하며, 데이터의 불변성을 보장하는 것이 일반적
  • 날짜, 시간, 돈 등의 값을 VO로 사용할 수 있음

차이점

  • DAO는 데이터베이스 접근 로직을 캡슐화
  • DTO와 VO는 데이터를 표현하고 전달하는 방법에 중점을 둠
    • DTO는 데이터를 전송하는데 중점을 둠
    • VO는 데이터 자체의 의미와 불변성에 중점을 둠