Java/자바 정리
104. 진짜 데이터 전용 클래스 – record로 더 간결하게
코딩하는냥이
2025. 5. 14. 10:39
반응형
이번 글에서는 자바에서 불변 데이터 객체를 간편하게 정의할 수 있는 record 키워드를 배워봅니다.
record를 사용하면 생성자, getter, toString(), equals(), hashCode()를 자동으로 생성해주기 때문에
클래스 선언이 매우 간결해지고 코드 관리도 쉬워집니다.
📌 예제 코드
package ch12.sec03.record;
// id, name, age를 갖는 불변 데이터 객체 정의
public record Member(String id, String name, int age) {
}
package ch12.sec03.record;
public class RecordExample {
public static void main(String[] args) {
Member m = new Member("winter", "눈송이", 25);
System.out.println(m.id()); // getter와 같은 역할
System.out.println(m.name());
System.out.println(m.age());
System.out.println(m.toString()); // 자동 생성된 toString()
System.out.println();
}
}
💻 실행 결과
winter
눈송이
25
Member[id=winter, name=눈송이, age=25]
💬 코드 설명
- record Member(...) 구문은 자동으로 다음과 같은 것들을 생성해준다:
- private final 필드들
- 전체 필드를 매개로 받는 생성자
- 각 필드에 대한 접근자 메서드 (id(), name(), age())
- toString(), equals(), hashCode() 메서드
- new Member(...)를 통해 객체를 생성할 수 있고, 각 필드에 대해 getter처럼 접근할 수 있다.
- record는 모든 필드가 final이며 불변(immutable)한 데이터 객체를 만들기 위해 설계되었기 때문에,
값을 수정하는 setter는 제공되지 않는다.
💡 포인트 정리
- record는 순수 데이터 저장 목적의 객체를 간결하게 만들 수 있는 구조이다.
- 불변 필드, 생성자, getter, toString(), equals(), hashCode()가 자동 생성된다.
- DTO, VO, 로그, 응답 데이터 등에서 매우 유용하게 사용된다.
- Java 16부터 정식 지원되며, 간결함과 가독성을 모두 잡을 수 있는 강력한 문법이다.
📌 정리하자면,
record는 데이터를 담는 데만 집중된 불변 객체 정의의 최적 해법입니다.
필드 정의만으로 필요한 메서드들이 자동 생성되기 때문에,
데이터 중심 개발에서 생산성을 크게 높여주는 기능입니다.