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를 사용해 볼 것 같다.
'개발일지 > TIL' 카테고리의 다른 글
[230715] [미니] 모여봐요 인생네컷 CI/CD 구성 (1) (0) | 2023.07.15 |
---|---|
[230714] [미니] 모여봐요 인생네컷 S.A (0) | 2023.07.14 |
[230712] Filter에서 400 상태코드 내려주기 (0) | 2023.07.12 |
[230711] @Transactional(readOnly = true) (0) | 2023.07.11 |
[230710] Enum이란? (0) | 2023.07.10 |