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는 데이터를 담는 데만 집중된 불변 객체 정의의 최적 해법입니다.
필드 정의만으로 필요한 메서드들이 자동 생성되기 때문에,
데이터 중심 개발에서 생산성을 크게 높여주는 기능입니다.