Record에 대해서 설명해 주세요.

2025. 1. 1. 09:51·백엔드 면접

Record는 자바 16에서 정식 출시된 특별한 유형의 클래스로 불변성을 기본으로 합니다.

기존의 클래스와 달리 모든 필드가 자동으로 final 키워드로 선언되며, 객체 생성 후 변경할 수 없습니다. 또한 필드 선언만으로 자동으로 생성자, getter(), equals(), hashCode(), toString() 메서드를 자동으로 생성해 주어 보일러 플레이트 코드를 줄일 수 있습니다. 이러한 특성으로 인해 멀티 스레드 환경에서 데이터가 의도치 않게 변경되지 않고 안전하게 전달할 수 있습니다.


Record로 생성한 모든 객체는 DTO인가요?

모든 Record 객체가 DTO인 것은 아닙니다. Record는 단순히 데이터를 캡슐화하는 역할을 하는데, DTO 외에도 값 객체(VO) 등의 다양한 용도로 사용될 수 있습니다.

 

DTO는 계층 간 데이터 전송을 목적으로 하는 객체인 반면, VO는 도메인 모델 내에서 특정 값을 표현하는 객체로 사용됩니다. 따라서 Record는 이 두 가지 모두에 적합하게 사용할 수 있지만, 그 목적에 따라 사용 방법이 달라집니다.


Record와 VO를 비교해 주세요.

Record와 VO는 모두 객체의 상태가 변경되지 않는 것을 보장합니다. 또한 데이터를 캡슐화하여 표현하는 데 초점을 맞춥니다. 그리고 동일한 필드 값을 가지면 동일한 객체로 간주된다는 공통점이 있습니다.

 

VO는 도메인 모델 내에서 특정 개념을 표현하고, 도메인 로직과 밀접하게 관련이 있습니다. 즉, VO는 비즈니스 로직이나 규칙을 가질 수 있습니다. 반면에 Record는 단순히 데이터를 캡슐화하여 전달하는 데 의미가 있습니다.

 

결론적으로 Record는 VO를 구현하는 데 적합하지만, VO의 모든 특성을 대체하지는 않습니다. VO는 더 넓은 도메인 맥락에서 사용되며, 비즈니스 로직을 포함할 수 있습니다.


Record의 한계는 무엇일까요?

Record는 extends를 사용하여 다른 클래스를 상속할 수 없고, final 클래스이기 때문에 확장이 어렵습니다. 또 주로 데이터를 전달하려는 목적으로 설계되었기 때문에 비즈니스 로직을 포함하기에 적절하지 않습니다.

그리고 자바 14 또는 16 이전 버전에서 호환이 불가능하다는 점이 있습니다.

'백엔드 면접' 카테고리의 다른 글

SOLID 원칙에 대해서 설명해 주세요.  (0) 2025.01.03
DB Replication에 대해서 설명해 주세요.  (0) 2025.01.02
HTTPS에 대해서 설명해 주세요.  (0) 2024.12.31
WAS와 웹 서버의 차이점은 무엇인가요?  (0) 2024.12.30
자료구조 스택에 대해서 설명해 주세요.  (1) 2024.12.27
'백엔드 면접' 카테고리의 다른 글
  • SOLID 원칙에 대해서 설명해 주세요.
  • DB Replication에 대해서 설명해 주세요.
  • HTTPS에 대해서 설명해 주세요.
  • WAS와 웹 서버의 차이점은 무엇인가요?
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    raid
    데브코스
    JPA
    오블완
    티스토리챌린지
    스프링
    백엔드 면접
    토스 페이먼츠
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
Record에 대해서 설명해 주세요.
상단으로

티스토리툴바