계층예시


요청이나 응답 값을 전달하는 클래스로 사용하면 안됩니다.
데이터를 담아서 데이터를 전달하는 바구니로 비유할 수 있습니다.
로직을 갖지 않는 순수한 객체 입니다.
entitiy 데이터 베이스와 매핑되어 있는 클래스 입니다.
오직 getter/ setter 메서드만 갖습니다.
setter 메소드는 가변의 역할을 합니다. 여기서 setter를 없애주면 불변의성을 보장합니다.
코드 예시
public class carDTO {
private String color;
// Getter
public String getColor() {
return color;
} // color 를 get 메소드로 반환
// Setter
public void setColor(String c) {
this.color = c;
} // color를 setter 메소드로 지정
}
값 그 자체를 표현하는 객체 입니다.
서로 다른 이름을 가진 vo의 인스턴스가 모든 속성 값이 같다면 같은 객체이다.
예시)
지폐나 전자제품과 같이 각기 고유한 일련번호를 가진 상품들이 있습니다. 하지만 우리는 일련번호(주소값)가 아닌 제품 자체(속성)로 상품을 비교합니다.
여기서 일련번호= 주소값 상품= 속성 이라고 할수 있습니다.
여기서 equals() 와 hashcode() 를 오버라이딩 해줘야지 속성들로 비교를 할수가 있습니다.
코드 예시
public class carVO {
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;
}
}
객체의 불변성 보장합니다.
로직을 포함할수 있습니다.
간단히 말하면 값 표현용 입니다.
실제 db 테이블과 매핑 되는 클래스 입니다.
id로 구분합니다.
로직을 포함할수 있습니다.
예시

