DTO 클래스에서 toString() 메소드를 작성해주는 이유

들어가며

  모든 클래스의 가장 최상위 클래스인 Object 클래스가 있다.  이때 Object 클래스가 가진 메소드 중 toString이라는 메소드가 있는데 이 toString이라는 메소드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드이다.

 

그렇다면 우리가 너무나도 당연하게 작성하는 아래와 같은 DTO 클래스에서 toString 메소드는 왜 만들어줄까?

package com.example.put.dto;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;

public class PutRequestDto {

    private String name;
    
    private int age;

    @JsonProperty("car_List")
    private ArrayList<CarDto> carList;
    
    //getter, setter 생략

    @Override
    public String toString() {
        return "PostRequestDto{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", carList=" + carList +
                '}';
    }
}

 

 

 Java에서 toString() 메소드를 DTO(Data Transfer Object)와 같은 객체에 구현하는 주된 이유는 주로 객체의 상태를 쉽게 확인하고, 디버깅을 용이하게 하기 위해서이다.

 

  toString() 메소드는 객체를 문자열로 표현하는 방법을 제공하며, 객체의 중요 정보를 문자열 형태로 반환하는데 이는 개발 과정에서 또는 로깅(logging) 과정에서 매우 유용하게 사용된다.

 

 

1. toString() 메소드 구현의 이점

1. 디버깅 용이성: 객체의 상태를 쉽게 문자열로 확인할 수 있어서, 디버깅 시에 객체의 현재 상태를 빠르게 이해할 수 있다.


2. 로깅: 시스템에서 발생하는 이벤트나 객체의 상태 변화를 로깅할 때, toString()을 통해 객체의 상태를 문자열로 기록할 수 있어 편리하다.


2. 기본 toString() 메소드와 오버라이딩을 해주는 이유

  Java의 모든 클래스는 Object 클래스를 상속받으며, Object 클래스에는 기본적인 toString() 메소드가 포함되어 있습니다. 기본 toString() 메소드는 객체의 클래스 이름과, 해시코드의 무순서한 값으로 구성된 문자열을 반환한다.

하지만 이러한 경우는 해당 객체에 무슨 Data가 들어가 있는지 확인하는데 도움이 안되니 DTO 클래스에서는 오버라이딩해서 필드의 값들을 포함하는 문자열을 반환하도록 구현하는 것이다.