빙응의 공부 블로그
[JAVA] Record와 DTO 본문
JAVA의 Record에 대해 알아보자!!
📝Record란 무엇일까요?
레코드(Record)는 Java 14에서 미리 보기 기능으로 도입되었고, JAVA 16에서 정식으로 도입된 새로운 데이터 클래스입니다. 레코드는 간결하고 불변한 데이터 구조를 정의하는 데 사용되며, 주로 데이터 전송 객체(DTO)나 간단한 데이터 모델 정의에 유용합니다.
기본 주요 개념
- 불변성 : 레코드의 필드는 기본적으로 final이며, 한 번 생성된 레코드는 변경할 수 없습니다.
- 자동 생성 : 레코드를 정의하면 여러 메서드가 자동 생성됩니다.
- equals(), hashCode(), toString(), Getter
레코드 정의
레코드는 record 키워드를 사용하여 정의됩니다.
public record Person(String name, int age) {}
📌 그렇다면 장점은?
- 간결함 : 레코드를 사용하면 코드를 줄일 수 있습니다. 클래스 정의, 생성자, Getter, toString(), equals(), hashCode() 메서드를 수동으로 구현할 필요가 없습니다. 추가로 Lombok 관련 어노테이션도 줄일 수 있습니다.
- 명확성: 레코드는 주로 데이터 캡슐화에 집중되므로, 코드의 가독성을 높이고 의도를 명확하게 전달할 수 있습니다.
- 불변성: 레코드는 불변 객체를 기본으로 하여 데이터 안전성을 제공합니다. 레코드를 생성한 후에는 상태가 변하지 않으므로 스레드 안전성이 보장됩니다
📝DTO와의 연관성
Record와 DTO는 서로 연관성이 깊습니다. DTO는 데이터를 전송하기 위한 객체이며,
레코드는 이러한 DTO를 정의하기 위해 만들어졌습니다.
그렇기에 레코드는 DTO를 정의하는 데 매우 적합합니다.
📌 예제
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CourseDto {
@NotEmpty(message = "주소를 작성해야합니다.")
private String address;
@NotEmpty(message = "타이틀을 작성해야합니다.")
private String title;
}
해당처럼 평범한 DTO가 있다고 생각해봅시다. 해당 DTO는 불변성을 위해 @Getter만 정의했습니다.
여기서 Record를 사용하면 아주 간단하게 표현할 수 있습니다.
@Builder
public record CourseDto(
@NotEmpty(message = "주소를 작성해야합니다.") String address,
@NotEmpty(message = "타이틀을 작성해야합니다.") String title) {
}
'JAVA' 카테고리의 다른 글
[JAVA] StringBuilder (0) | 2024.07.03 |
---|---|
[JAVA] Buffered와 StringTokenizer (0) | 2024.07.01 |
[JAVA]함수형 프로그래밍 - Stream API 고급 (1) | 2023.12.02 |
[JAVA]함수형 프로그래밍 - Stream API 사용법 (1) | 2023.11.30 |
[JAVA]함수형 프로그래밍 - 람다식(Lambda Expression) (2) | 2023.11.29 |