아 이게 뭐임!

DTO랑 VO가 뭐임!! (코드 포함)

마로가마따 2021. 7. 25. 08:15

Contents

-       DTO 뭐임!

-       VO 뭐임!

-       뭔 차이임?

 

 

 

세상에 코드 블럭 줄맞춤 진짜 잘했는데 자동으로 망가짐...

 

DTO VO 냥이

 

DTO 뭐임!

 

- Data Transfer Object 의 약자로 데이터를 전달하기 위해 사용하는 객체이다.

- 계층 간 데이터를 전달하기 위한 객체이다

 

특징

오직 getter / setter 메서드 만을 갖는다.

다른 로직을 가지지 않는다.

 

 

보내는 쪽에서 setter를 사용해 DTO에 데이터를 담아 보내고 받는 쪽에서 getter로 전달받은 DTO로부터 데이터를 꺼내쓰는 방식이다.

 

 

예시

class

public class HumanDto {
	private String name;
    
    public String getName() {
    	return name;
    }
    
    public void setName(String name){
    	this.name  = name;
    }
}

 

service

public HumanDto createNewHuman(){
	String newName = "LeeShin"
    
	HumanDto humanDto = new HumanDto();
    humanDto.setName(newName); // 얘 왜이럼;;

	return humanDto;
}

칸이 안맞춰지는데요...ㅠㅜ

 

web

public String createNewHuman(){ 
	HumanDto newHumanDto = exService.createNewCrew(); // ㅇ_ㅇ!
    String nameOfNewHuman = newHumanDto.getName();
    return nameOfNewHuman;
}

 

원하는 곳에 값을 보내기 위해 주섬주섬 포장해서 가져가는 느낌...

 

 

 

VO 뭐임!

 

- Value Object의 약자

 

- 값 자체를 표현하는 객체이다. 값 자체로 의미가 있는 것이 VO이다.

(값 자체로 객체가 표현되기 때문에 값의 변경이 없다)

 

예를 들면, 10000원짜리 지폐는 각각 일련 번호가  다르지만 다 동일한 만원으로 취급한다.

 

VO는 이처럼 어느 상황에도 동일하게 취급된다.

 

 

아래는 예시 코드이다.

 

public class HumanVO {
	private final int id;
    private final String name;
    
	public Human(int id, String name){
    	this.id = id;
        this.name = name;
    }
    
    public int getId(){
    	return this.id;
    }

	public String getName(){
    	return this.name;
    }
}

 

 

 

 

 

뭔 차이임?

 

그러게...

 

 

VO는 변하지 않는 값, DTO는 데이터를 담는 상자인 것 같다.

 

DTO랑 VO랑 구분하는게 의미가 있나 싶다.

 

사람들 마다 정의하는게 약간씩 다르고 그렇다고 쓰임이 막 그렇게 다른 것도 아니고...

 

그냥 필요한 형태로 사용하는게 좋을 것같다.

 

 

 

 

 

반응형

'아 이게 뭐임!' 카테고리의 다른 글

NULL은 특별하다...!  (0) 2021.07.27
제어의 역전이 뭐임!! [Inversion of Control]  (0) 2021.07.26
Cache(캐시)가 뭐임!!!  (0) 2021.07.24
세션이 뭐임!!  (2) 2021.07.23
쿠키가 뭐임!!  (0) 2021.07.22