본문 바로가기

Programming/Java

[Java] DTO / VO

반응형

DTO(Data Transfer Object)

  • 계층(Layer)간 데이터 교환을 위해 사용하는 객체.
  • 데이터 교환 목적으로 사용하므로 로직을 가지지 않는다.
  • getter/setter 메소드만 가진다.

 

데이터를 담고, 필요 시 꺼내어 사용하는 용도로만 사용되는 것이 DTO

 

class Member {
	private String name;
    private int age;
    
    public Member(String name, int age) {
    	this.name = name;
        this.age = age;
    }
    
    public String getName() {
    	return name;
    }
    
    public String setName(String name) {
    	this.name = name;
    }
    
    ...
}

 

VO(Value Object)

  • 값 그 자체를 표현하는 객체.
  • 로직을 포함할 수 있다.
  • 객체의 불변성(객체의 정보가 변경되지 않음)을 보장한다.

 

서로 다른 이름을 갖는 VO 인스턴스라도 모든 속성 값이 같다면 두 인스턴스는 같은 객체라고 할 수 있다.

이를 위해 VO에는 Object 클래스의 equals(), hashCode() 메소드를 오버라이딩해야 한다.

 

참고

https://youngjinmo.github.io/2021/04/dto-vo-entity/

 

DTO와 VO 그리고 Entity의 차이

본 포스팅은 우아한Tech에 올라온 라흐님의 발표영상 DTO vs VO 영상을 보고 정리한 포스팅이다. 넥스트 스텝에서 클린코드 과정을 이수하면서 DTO와 VO의 차이를 제대로 이해못하고 미션을 수행하

youngjinmo.github.io

반응형