티스토리 뷰

Backend

VO, DTO의 차이

out of coding 2014. 3. 28. 13:25

VO

  • Value Object. DTO와 동일한 개념이나 차이점은 읽기를 하기 위해서 사용하는 객체이다. 또한 관계데이터베이스의 레코드에 대응되는 자바클래스인것이다. 형태는 Database레코드를 구성하는 필드들을 VO의 Attribute로 하고 해당 변수에 접근 할 수 있는 Getter와 Setter 메소드의 조합으로 클래스를 형성되어진 클래스이다. 특성은 거의 불변성을 가지고 equals()로 비교할 때 객체의 모든 값을 비교해야 한
  • 필요성. Network traffic을 줄일수 있다.
  • 장점. 비 서버측 클라이언트도 네트워크 오버헤드 없이 영속성 데이터에 액세스 할 수 있다.
  • 단점. 데이터 전달을 위해서는 가장 효율적인 방법이지만, 클래스 선언을 위해 많은 코드가 필요하게 됩니다. 즉, 파일수가 많아지게 되고 관리도 힘들어지게 된다.
// VO패턴에 따라 상태가 변하지 않는 클래스를 상속 받는다.
public class Data extend ValueObject 
{
	private String data;
	private int number;

	public String getData()
	{
		return data;
	}

	public void setData(String data)
	{
		this.data = data;
	}

	public int getNumber()
	{
		return number;
	}

	public int setNumber(int number)
	{
		this.number = number;
	}
}


DTO

  • Data Transfer Object. VO와 동일하게 데이터를 저장하여서 사용하도록 하는 부분에서 필요하게 된다. 하지만 VO와 비교를 하여 보면 DTO는 같은 시스템에서 사용되는것이 아닌 다른 시스템으로 전달하는 작업을 처리하는 객체이다. 레이어간의 통신용도로 오가는 객체를 말한다.
  • VO와 DTO의 다른점. DTO는 메소드 호출 횟수를 줄이기 위해 데이터를 담고 있는 것. VO는 값이 같이면 동일한 오브젝트라고 볼 수 있는 녀석으로 표현을 함. 예를 들자면,

    DTO a = new DTO(1);
    DTO b = new DTO(1);
    a != b;

    VO a = VO(1);
    VO b = VO(1);
    a == b;

    이렇게 된다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함