상세 컨텐츠

본문 제목

[Spring/Java] Java record

server

by 셉인 2024. 4. 4. 14:33

본문

728x90

[Spring/Java] Java record

record : 데이터 운반에 최적화된 타입

불변성을 가진 데이터 모델을 간결하게 정의할 수 있다.

데이터 전송 객체(DTO), 요청 (Request), 응답(Response) 객체 등에 유용하다.

Record 사용 안할 시

1. 각 데이터 클래스에 대해 동일한 프로세스를 반복 

2. 클래스의 목적이 모호해진다. 

-> 클래스가 데이터 클래스임을 명시적으로 선언해준다.

Record의 주요 특징

필드 유형과 이름만 필요한 불변 데이터 클래스

  1. 불변성(Immutability): Record의 모든 필드는 final이다. 이는 한 번 생성된 Record의 상태가 변경될 수 없음을 의미한다.
  2. 간결성(Conciseness): Record는 자동으로 모든 필드에 대한 생성자, 게터(Getter) 메서드, equals(), hashCode(), toString() 메서드를 생성한다.
  3. 데이터 운반용 용도: Record는 데이터 운반을 목적으로 설계되었다. 즉, 로직을 포함하기보다는 데이터를 저장하고 전달하는 데에 중점을 둔다.

Record 사용 예

public record UserRequest(String username, String email) {}

public record UserResponse(String username, String email, int status) {}

 

위 예에서 UserRequestUserResponse는 Record를 사용하여 정의되었다. 이들은 각각 사용자의 요청과 응답을 표현하는 불변 객체다. Java Record를 사용함으로써, 각 필드에 대한 생성자와 게터, 그리고 equals(), hashCode(), toString() 메서드가 자동으로 생성된다. 따라서 추가적인 메서드 구현 없이 이러한 기능들을 바로 사용할 수 있다.

Record의 제한 사항

  • Record는 확장할 수 없다. 즉, 다른 클래스를 상속하거나 다른 Record를 상속할 수 없다.
  • Record 내부에는 인스턴스 필드를 추가할 수 없다. 모든 데이터는 Record 선언 시 명시된 컴포넌트(필드)로 제한된다.
  • Record는 abstract 또는 final로 선언할 수 없으며, 자동으로 final로 처리된다.
 
 
728x90

관련글 더보기

댓글 영역