[Java] DTO, VO, DAO 차이점

2024. 11. 12. 17:17·BackEnd/Java
반응형
DAO (Data Access Object)

 

데이터베이스와 상호작용을 담당하는 객체를 말합니다.

데이터베이스에 접근하기 위한 로직을 분리하기 위해 사용합니다.

직접 데이터베이스에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행합니다.

 

DAO 예시 코드

 

public class UserDAO {
    public void createUser(User user) {
        // 데이터베이스에 유저 정보를 저장
    }

    public User getUserById(int userId) {
        // 데이터베이스에서 유저 정보 조회
    }

    public void updateUser(User user) {
        // 데이터베이스에서 유저 정보 업데이트
    }

    public void deleteUser(int userId) {
        // 데이터베이스에서 유저 삭제
    }
}

 

 


 

DTO (Data Transfer Object)

 

계층 간에 데이터를 전송하는 객체입니다. 주로 단순한 데이터 구조를 가집니다.

이 객체는 데이터베이스 엔티티 객체와는 달리, 여러 다른 데이터 객체를 하나로 묶어서 전송할 수 있습니다.

 

DTO 예시 코드

 

public class UserDTO {
    private String name;
    private String email;
    private int age;
    
    // Getter, Setter, Constructor 생략
}

 


 

VO (Value Object)

 

불변 객체로, 동일한 값을 가지는 VO 객체는 항상 동일하게 취급합니다.

주로 식별자가 없고, 단순히 값으로만 비교되는 객체로 사용됩니다.

주로 엔티티 속성 값들을 그룹화하거나, 도메인 모델에서 중요한 의미를 가지는 객체로 사용됩니다.

 

VO 예시 코드

 

public class Money {
    private final int amount;

    public Money(int amount) {
        this.amount = amount;
    }

    public int getAmount() {
        return amount;
    }

    // 동등성 비교 및 해시 코드 계산
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Money money = (Money) obj;
        return amount == money.amount;
    }

    @Override
    public int hashCode() {
        return Integer.hashCode(amount);
    }
}

 


 

DAO, DTO, VO 차이점 정리

 

DAO

 

데이터베이스와 상호작용을 처리하는 역할을 합니다.

주요 특징으로는 CRUD 작업을 수행하며, 비즈니스 로직과 데이터베이스 액세스를 분리합니다.

 

DTO

 

계층 간 데이터 전송을 위한 객체입니다.

주요 특징으로는 데이터를 묶어서 전송하며, 주로 네트워크나 계층 간 데이터 전송에 사용합니다.

 

VO

 

불변 객체, 값 자체를 표현합니다.

값만 비교되며, 객체의 상태는 변경되지 않습니다. 도메인 모델에서 중요한 값을 표현합니다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'BackEnd > Java' 카테고리의 다른 글

[JAVA] Garbage Collection  (0) 2024.11.03
[JAVA] 자바 컴파일 과정  (0) 2024.03.25
[Java] 자바 프로그래밍 시작하기  (0) 2024.01.10
'BackEnd/Java' 카테고리의 다른 글
  • [JAVA] Garbage Collection
  • [JAVA] 자바 컴파일 과정
  • [Java] 자바 프로그래밍 시작하기
Dev Chu
Dev Chu
  • Dev Chu
    Log_Double 7
    Dev Chu
  • 전체
    오늘
    어제
    • LOG LIST (199)
      • log Double 7 (2)
        • notice (1)
        • 회고록 (1)
      • Study (111)
        • 과제 (2)
        • 코딩 테스트 (105)
        • 대규모 시스템 설계 기초 (4)
      • CS (10)
        • 자료구조 & 알고리즘 (4)
        • Design Pattern (2)
        • TIL (4)
      • FrontEnd (26)
        • HTML & CSS (16)
        • JavaScript & jQuery (9)
        • React (1)
      • BackEnd (24)
        • Java (4)
        • Python (6)
        • Database (0)
        • Spring (6)
      • Infra & DevOps (3)
        • AWS (3)
        • Git (8)
      • Project (3)
        • repo_bis (2)
        • WhiteMonday (1)
      • ETC (20)
        • TIP (13)
        • Error (5)
        • SQLD (2)
  • 블로그 메뉴

    • 코딩 테스트
  • 링크

    • GitHub
  • 공지사항

    • Log Double 7
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Dev Chu
[Java] DTO, VO, DAO 차이점
상단으로

티스토리툴바