[Java] DAO, DTO, VO의 설명 및 예시

Devel/JAVA|2024. 2. 2. 13:21
반응형

 

DTO (Data Transfer Object)

  • DTO는 주로 데이터 전송을 위한 객체로 사용된다.
  • 데이터베이스에서 가져온 데이터를 어플리케이션 내의 계층 간(Controller, View, Business Layer)에 전송하는 데 사용된다.
  • DTO는 필요한 데이터를 포함하며, 주로 게터(Getter)와 세터(Setter) 메서드를 갖는다. (로직을 갖지지 않는  데이터 객체)
public class UserDTO {
    private String username;
    private String email;

    // Getter, Setter 메서드

    // 예시에서는 간단하게 생략
}

 

 

DAO (Data Access Object):

  • DAO는 데이터베이스와의 상호 작용을 담당하는 객체이다.
  • 데이터베이스 연산을 수행하고, 데이터를 검색하거나 조작하는 역할을 한다.
  • 주로 CRUD(Create, Read, Update, Delete) 기능을 제공한다.
public class UserDao {
    public UserDTO getUserById(int userId) {
        // 데이터베이스에서 사용자 정보를 가져오는 로직
        // 결과를 UserDTO 객체로 매핑하여 반환
    }

    public void createUser(UserDTO user) {
        // 데이터베이스에 사용자를 생성하는 로직
    }

    // 다양한 데이터베이스 연산 메서드들...
}

 

 

VO (Value Object):

  • VO는 불변(immutable)하며, 주로 도메인 모델에서 사용되는 객체이다. (Read-Only 속성을 가진 값 오브젝트), getter 기능만 가짐
  • VO는 주로 데이터의 속성을 나타내는데 사용되며, 일반적으로 변경이 불가능한 객체이다.
public class AddressVO {
    private String street;
    private String city;
    private String zipCode;

    // Getter 메서드만 있고 Setter는 없음

    // 예시에서는 간단하게 생략
}

or

@Getter
public enum AddressVO {
    
    private final String street;
    private final String city;
    private final String zipCode;

    private AddressVO(String street, String city, String zipCode) {
        this.street = street;
        this.city = city;
        this.zipCode = zipCode;
    }
}

 

 

DTO는 데이터 전송, DAO는 데이터베이스와의 상호 작용, VO는 불변의 데이터 구조를 표현하는 데 중점을 둡니다

 

 

댓글()
loading