본문 바로가기

Spring Boot

[Spring Boot] DAO, DTO, VO 차이

728x90

1. DAO (Data Access Object)

  • 역할: 데이터베이스와 직접 소통하여 데이터를 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행하는 객체입니다.
  • 내용:
    • DAO 패턴은 데이터 접근 로직을 캡슐화하여 코드의 재사용성과 유지보수성을 높입니다.
    • DAO는 데이터베이스와의 의존성을 줄여 테스트가 용이하도록 하며, JDBC, JPA 등을 사용해 구현할 수 있습니다.

2. DTO (Data Transfer Object)

  • 역할: 계층 간 데이터를 전달하는 객체로, 주로 Controller와 Service 간에서 사용됩니다. DTO는 데이터를 이동시키는 그릇 역할을 하며 로직을 포함하지 않습니다.
  • 내용:
    • DTO는 계층 간에 필요한 정보만 포함하도록 설계하여 불필요한 데이터가 전송되지 않도록 최적화할 수 있습니다.
    • Lombok을 사용해 getter/setter를 자동 생성할 수 있으며, Jackson 등을 사용해 직렬화 및 역직렬화에 활용됩니다.

3. VO (Value Object)

  • 역할: 불변 객체로, 값을 전달하거나 비교하는 데 사용됩니다. 데이터의 무결성을 유지하고, 값 자체에 의미를 부여하는 역할을 합니다.
  • 내용:
    • VO는 데이터를 전달할 때 해당 값들이 변하지 않도록 보장합니다.
    • VO는 객체 간의 값 비교를 위한 equals와 hashCode 메서드를 오버라이드하여 사용됩니다.
    • DDD(Domain Driven Design)에서 VO는 중요한 개념으로, 특정 도메인 내에서 불변해야 할 속성을 관리합니다.

 

DTO와 VO의 차이점 정리

  • DTO는 데이터 이동을 위해 설계된 가변 객체로, 데이터를 수정하고 전달하는 데 사용됩니다.
  • VO는 값을 비교하거나 전달하기 위한 불변 객체로, 데이터의 변경이 불가능하며 데이터의 의미와 무결성을 보장합니다.
728x90