1. Record란?
Java 16에서 정식으로 도입된 Record는 불변(immutable) 데이터 객체를 생성하기 위한 특별한 형태의 클래스다.
주요 특징은 아래와 같은데,
- 모든 필드가 private final로 선언된다.
- 생성자, getter, equals(), hashCode(), toString()메서드가 자동 생성된다.
- 불변성(immutability)이 보장된다.
- java.lang.Record를 자동으로 상속한다.
- final 클래스라 상속이 불가능하다.
2. 기존 DTO vs Record 비교
동일한 데이터 객체를 일반 클래스로 작성했을 때, Record로 작성했을 때를 비교해보자
일반 DTO 클래스
public class UserDTO {
private final String name;
private final int age;
public UserDTO(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
@Override
public String toString() { ... }
}
Record 사용
public record UserRecord(String name, int age) { }
매우 간결해진다.
보일러플레이트 코드가 대폭 감소하게 되고, 코드 가독성이 증가하게 되는 것이다.
불변 객체로 데이터 일관성을 유지하게 되고, 스레드 안전성을 확보할 수 있다.
컴팩트한 설계로 메모리 사용량이 감소하게 되고, 가비지 컬렉션 부하가 감소한다.
3. Record와 스레드 안정성
Record는 불변 객체이기 때문에 스레드 안전하다.
스레드 안전이란 여러 스레드가 동시에 같은 객체에 접근할 때도 데이터의 정합성과 일관성이 보장되는 상태를 말한다.
References
https://www.maeil-mail.kr/question/107
'백엔드 면접 질문' 카테고리의 다른 글
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요? (0) | 2025.01.09 |
---|---|
TCP 3-way handshake에 대해서 설명해주세요. (0) | 2025.01.07 |
로그와 메트릭을 설명해주세요. (0) | 2025.01.06 |
HTTP 메서드에서 멱등성(Idempotent)이란 무엇인가요? (0) | 2025.01.03 |
웹 브라우저에 www.google.com 을 입력했을 때 어떤 과정이 이뤄지나요? (0) | 2024.12.31 |