'자바 성능 튜닝 이야기'를 읽고, Transfer Object 패턴에 대해 정리했습니다.
Trnasfer Object패턴은 Transfer Object를 만들어 하나의 객체에 여러 타입의 값을 전달하는 일을 수행합니다
다른 말로는 DTO(Data Transfer Object)와 자주 비교되는 VO(Value Object)라고도합니다
import java.io.Serializable;
public class HwangTO implements Serializable {
private String name;
private String id;
private String phone;
public HwangTO() {
super();
}
public HwangTO(String name, String id, String phone) {
this.name = name;
this.id = id;
this.phone = phone;
}
public String getName() {
return name == null ? "" : name;
}
public String getId() {
return id;
}
public String getPhone() {
return phone;
}
public void setName(String name) {
this.name = name;
}
public void setId(String id) {
this.id = id;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append("name=")
.append(name)
.append("id=")
.append(id)
.append("phone=)
.append(phone);
return sb.toString();
}
}
Transfer Object 패턴는 필드의 접근 제어자에 대한 엄격한 규칙이 없습니다.
public
을 사용할 수도 있으며, private
으로 은닉한 후 getter
와 setter
를 통해 접근하는 방법도 가능합니다.
성능 측면에서는 public
필드를 사용하는 것이 유리할 수도 있지만,
데이터 은닉이 필요한 경우 private
과 getter
, setter
를 사용하는 것이 권장됩니다
Transfer Object 패턴에서는 toString()
메서드의 구현이 권장됩니다.
구현하지 않으면 객체의 주소값이 반환되므로,
JUnit 기반 테스트 코드 작성 시 값 비교나 데이터 확인을 위해 toString()
을 구현하는 것이 좋습니다.
Transfer Object의 주된 목적은 하나의 객체를 통해 여러 타입의 값을 전달하는 것입니다.
엄청난 성능 개선을 목표로 하는 패턴이 아니라,
데이터 전송 횟수를 줄이고 여러 타입의 값을 한 번에 전달하는 데 초점을 둡니다.
toString()
구현이 권장됩니다.