ecsimsw

DTO와 VO, Entity 본문

DTO와 VO, Entity

JinHwan Kim 2021. 4. 16. 00:14

DTO

DTO는 Data Transfer Object로 레이어 간 데이터 교환을 위해 사용한다. 예를 들면 Controller에서 View로 출력할 데이터를 넘겨줄 때 DTO를 사용했다. 또는 DB에서 꺼낸 데이터를 담아 가져오기 위해 사용했다.

 

public class GameInfoDto {
    private final String[][] board;
    private final double score;

    public GameInfoDto(String[][] board, double score) {
        this.board = board;
        this.score = score;
    }

    public GameInfoDto(Board board, Score score) {
        this(board.parseUnicodeBoard(), score.value());
    }

    public String[][] getBoard() {
        return board;
    }

    public double getScore() {
        return score;
    }
}

 

VO

VO라는 단어를 계속 보았고, DTO랑 다른 점을 모르겠어 정리해봤다. VO는 Value Object로 말 그대로 값 객체이다. 값 자체를 위한 객체. 따라서 값이 같으면 같은 객체로 봐야한다. 그래서 VO 개념에 equals()와 hashCode()가 항상 따라 다녔나보다.

 

보자마자 떠올랐던 예시로 자동차 미션의 Position 객체가 생각났다. 우아한테크코스에서 자동차 미션 중에 모든 원시값을 포장하는 연습, 가급적 불변 객체로 만드는 연습을 하였고, int형 원시값이었던 자동차의 위치도 불변으로 만들고 Position 클래스를 정의하여 포장했었다.

 

이 Position이 VO가 아닌가 싶다. 그 위치 '값' 자체를 위한 객체. 위치가 동일한 Position 객체들은 모두 같은 Position 객체.

 

누군가 DTO와 VO의 차이를 물어보거나, 스스로 헷갈릴 때 앞으로는 이 Position을 썼던 경험을 떠올릴 것 같다.

 

Entity

Entity는 DB 테이블과 1:1 매핑되는 클래스이다. 테이블의 칼럼만을 속성으로 가지고, 존재하지 않는 칼럼을 가져선 안된다.

'Server application > Web, Servlet' 카테고리의 다른 글

웹 서버와 WAS  (0) 2021.05.02
스프링 이전에 Servlet  (0) 2020.07.29
MVC 패턴  (0) 2020.06.08
JSP,Servlet / 한글화  (0) 2020.05.30
redirect 와 forward의 차이  (0) 2020.05.21
Comments