Java Record의 등장
최신 프로그래밍 언어들은 간결하고 효율적인 코드 작성을 중요하게 여깁니다. 데이터를 담는 객체를 정의할 때, 이러한 현대적인 언어들이 제공하는 기능 중 하나가 바로 불변성을 가진 데이터 홀더입니다.
Kotlin의 data class 가 개발자들에게 큰 인기를 끌면서, Java도 이에 대한 답변으로 record 를 제시했습니다. record 는 데이터를 운반하는 간단한 구조를 정의할 때 사용되며, 내부적으로 불변성을 가진 필드와 함께, 필수적인 메소드들을 자동으로 생성합니다.
Record와 Data Class 비교
Kotlin의 data class 와 마찬가지로, Java의 record 는 개발자가 수동으로 equlas(), hashCode(), toString() 등을 정의할 필요를 없애줍니다. 이는 코드의 양을 줄이고, 가독성을 높이며, 오류의 가능성을 줄입니다.
예를 들어, 로그인 응답 DTO를 Java에서 클래스로 한다면, 기존에는 다음과 같이 적었습니다.
@Getter
@Builder
@AllArgsConstructor
public class SignInResponse {
private final String accessToken;
private final String refreshToken;
}
record는 모든 필드에 대한 getter를 자동으로 제공하고, 모든 필드는 기본적으로 final입니다. 이는 추가적인 @Getter, @AllArgsConstructor, @NoArgsConstructor, @Builder 어노테이션이 필요하지 않음을 의미합니다. 즉, 더 이상 롬복 덕지덕지를 안 해도 된다는 뜻입니다.
public record SignInResponse(String accessToken, String refreshToken) {}
Kotlin의 data class는 어떨까요? Java의 record와 상당히 유사합니다.
data class SignInResponse(val accessToken: String, val refreshToken: String)
두 예시 모두 필드에 대한 자동 생성된 getter와 함께, 불변성을 가진 객체를 제공합니다.
응답 DTO에서의 활용
API 응답을 위한 DTO에서 record 또는 data class 를 사용하면, JSON이나 XML로의 직렬화 과정에서 데이터의 일관성과 무결성을 유지할 수 있습니다. 불변 객체는 멀티스레드 환경에서 데이터의 안전성을 보장하며, 클라이언트에게 정확한 정보를 전달하는 데 중요한 역할을 합니다.
Java record 와 Kotlin data class 는 DTO를 정의할 때 불필요한 코드를 줄이고, 응답 객체의 안정성을 높이는 데 큰 장점을 가집니다. 불변성은 데이터의 안전한 공유를 가능하게 하고, 자동 생성된 메소드들은 개발자가 보다 중요한 비즈니스 로직에 집중할 수 있도록 합니다. Java가 record 를 도입함으로써, Kotlin의 data class 와 비슷한 수준의 편리함과 안정성을 제공하게 되었습니다. 이제 Java 개발자들도 더 깨끗하고, 더 안전하며, 더 간결한 코드를 작성할 수 있게 되었습니다.
'CS > JAVA' 카테고리의 다른 글
[Java] Comparable vs Comparator (0) | 2024.07.09 |
---|---|
[Java] String (Array) <-> Int (Array) 변환 정리 (1) | 2024.07.03 |
[Java] Java의 compareTo 메소드와 Comparable 인터페이스 (0) | 2023.07.25 |
[Java] String, Char 대소문자 확인 및 변환 (0) | 2023.02.27 |
[JAVA] String <->Char 변환 정리 (0) | 2023.02.27 |
Java Record의 등장
최신 프로그래밍 언어들은 간결하고 효율적인 코드 작성을 중요하게 여깁니다. 데이터를 담는 객체를 정의할 때, 이러한 현대적인 언어들이 제공하는 기능 중 하나가 바로 불변성을 가진 데이터 홀더입니다.
Kotlin의 data class 가 개발자들에게 큰 인기를 끌면서, Java도 이에 대한 답변으로 record 를 제시했습니다. record 는 데이터를 운반하는 간단한 구조를 정의할 때 사용되며, 내부적으로 불변성을 가진 필드와 함께, 필수적인 메소드들을 자동으로 생성합니다.
Record와 Data Class 비교
Kotlin의 data class 와 마찬가지로, Java의 record 는 개발자가 수동으로 equlas(), hashCode(), toString() 등을 정의할 필요를 없애줍니다. 이는 코드의 양을 줄이고, 가독성을 높이며, 오류의 가능성을 줄입니다.
예를 들어, 로그인 응답 DTO를 Java에서 클래스로 한다면, 기존에는 다음과 같이 적었습니다.
@Getter @Builder @AllArgsConstructor public class SignInResponse { private final String accessToken; private final String refreshToken; }
record는 모든 필드에 대한 getter를 자동으로 제공하고, 모든 필드는 기본적으로 final입니다. 이는 추가적인 @Getter, @AllArgsConstructor, @NoArgsConstructor, @Builder 어노테이션이 필요하지 않음을 의미합니다. 즉, 더 이상 롬복 덕지덕지를 안 해도 된다는 뜻입니다.
public record SignInResponse(String accessToken, String refreshToken) {}
Kotlin의 data class는 어떨까요? Java의 record와 상당히 유사합니다.
data class SignInResponse(val accessToken: String, val refreshToken: String)
두 예시 모두 필드에 대한 자동 생성된 getter와 함께, 불변성을 가진 객체를 제공합니다.
응답 DTO에서의 활용
API 응답을 위한 DTO에서 record 또는 data class 를 사용하면, JSON이나 XML로의 직렬화 과정에서 데이터의 일관성과 무결성을 유지할 수 있습니다. 불변 객체는 멀티스레드 환경에서 데이터의 안전성을 보장하며, 클라이언트에게 정확한 정보를 전달하는 데 중요한 역할을 합니다.
Java record 와 Kotlin data class 는 DTO를 정의할 때 불필요한 코드를 줄이고, 응답 객체의 안정성을 높이는 데 큰 장점을 가집니다. 불변성은 데이터의 안전한 공유를 가능하게 하고, 자동 생성된 메소드들은 개발자가 보다 중요한 비즈니스 로직에 집중할 수 있도록 합니다. Java가 record 를 도입함으로써, Kotlin의 data class 와 비슷한 수준의 편리함과 안정성을 제공하게 되었습니다. 이제 Java 개발자들도 더 깨끗하고, 더 안전하며, 더 간결한 코드를 작성할 수 있게 되었습니다.
'CS > JAVA' 카테고리의 다른 글
[Java] Comparable vs Comparator (0) | 2024.07.09 |
---|---|
[Java] String (Array) <-> Int (Array) 변환 정리 (1) | 2024.07.03 |
[Java] Java의 compareTo 메소드와 Comparable 인터페이스 (0) | 2023.07.25 |
[Java] String, Char 대소문자 확인 및 변환 (0) | 2023.02.27 |
[JAVA] String <->Char 변환 정리 (0) | 2023.02.27 |