레이어 간 데이터를 전달하는 객체
//getter와setter 메서드 만을 가진다
public class UserDTO {
private String name;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
//생성자를 이용한 불변 객체 (변조 방지)
public class UserDTO {
private String name;
private String id;
public UserDTO(String name, String id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
}
값을 가지는 객체
//생성자를 이용한 불변 객체
public class CarVO {
private final String color;
public CarVO(String color) {
this.color = color;
}
}
//비교 Test
class CarVOTest {
@Test
void CarVOEqualTest() {
final String color = "red";
CarVO car1 = new CarVO(color);
CarVO car2 = new CarVO(color);
assertThat(car1).isEqualTo(car2); //오류
assertThat(car1).hasSameHashCodeAs(car2); //오류
}
}
//비교 overide 필요
public class CarVO {
private final String color;
public CarVO(String color) {
this.color = color;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CarVO carVO = (CarVO) o;
return Objects.equals(color, carVO.color);
}
@Override
public int hashCode() {
return Objects.hash(color);
}
}
레이어 간 데이터 전달할 때 사용 가능
https://maenco.tistory.com/entry/Java-DTO%EC%99%80-VO%EC%9D%98-%EC%B0%A8%EC%9D%B4