[One-Day Tech Talk] Transfer Object 패턴

황제연·2025년 3월 3일
0

CS학습

목록 보기
21/193
post-thumbnail

서론

'자바 성능 튜닝 이야기'를 읽고, Transfer Object 패턴에 대해 정리했습니다.

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으로 은닉한 후 gettersetter를 통해 접근하는 방법도 가능합니다.
성능 측면에서는 public 필드를 사용하는 것이 유리할 수도 있지만,
데이터 은닉이 필요한 경우 privategetter, setter를 사용하는 것이 권장됩니다

toString() 구현

Transfer Object 패턴에서는 toString() 메서드의 구현이 권장됩니다.
구현하지 않으면 객체의 주소값이 반환되므로,
JUnit 기반 테스트 코드 작성 시 값 비교나 데이터 확인을 위해 toString()을 구현하는 것이 좋습니다.

Transfer Object의 목적

Transfer Object의 주된 목적은 하나의 객체를 통해 여러 타입의 값을 전달하는 것입니다.
엄청난 성능 개선을 목표로 하는 패턴이 아니라,
데이터 전송 횟수를 줄이고 여러 타입의 값을 한 번에 전달하는 데 초점을 둡니다.

결론

  • Transfer Object 패턴은 하나의 객체를 통해 여러 타입의 값을 전달하는 데 사용됩니다.
  • 필드의 접근 제어자는 목적에 따라 자유롭게 설정할 수 있습니다.
  • 테스트 및 데이터 검증을 위해 toString() 구현이 권장됩니다.
profile
Software Developer

0개의 댓글