본문 바로가기

개발일지/TIL

[230713] Record 적용해보기

Record

💬 class, interface 등과 같은 타입 선언으로 불변 객체로써 데이터를 표현하기 위해 만들어졌다. 또한 다양한 기본적인 기능들을 제공해 편리하게 사용할 수 있다.
✔ 모든 필드에 private final 적용
✔ 모든 필드에 getter 적용
✔ 모든 필드를 인수로 가지는 생성자
✔ 모든 필드가 일치할 경우 true를 반환하는 equals 메서드
✔ 모든 필드가 일치할 때 동일한 값을 반환하는 hashcode 메서드
✔ 클래스 이름과 모든 필드의 값을 포함하는 toString 메서드

Record 코드 적용

✔ 기존 코드

 

@Getter
@RequiredArgsConstructor
public class PostRequestDTO {
    private final String title;
    private final String content;
}

 

✔ 적용 코드

 

public record PostRequestDTO(String title, String content) {}

 

이점

보일러 플레이트를 많이 제거해준다고 한다. getter, private final, toString, equals 등을 따로 만들 필요 없기 때문이다. 간결하게 코드를 작성할 수 있는 것 같다. 

생각

DTO에 불변 객체를 자주 사용하다 보니 보일러 플레이트 코드를 많이 제거할 수 있을 것 같다. 당장 만들어보는 것은 너무 간단한 DTO에 작성을 해서 이점이 막 와닿지는 않지만, 여러 프로젝트를 하면서 느낄 수 있을 것 같다. 윗 내용들이 이해도 되고 공감도 되니 앞으로 Record를 사용해 볼 것 같다.