server
[Spring/Java] Java record
셉인
2024. 4. 4. 14:33
728x90
[Spring/Java] Java record
record : 데이터 운반에 최적화된 타입
불변성을 가진 데이터 모델을 간결하게 정의할 수 있다.
데이터 전송 객체(DTO), 요청 (Request), 응답(Response) 객체 등에 유용하다.
Record 사용 안할 시
1. 각 데이터 클래스에 대해 동일한 프로세스를 반복
2. 클래스의 목적이 모호해진다.
-> 클래스가 데이터 클래스임을 명시적으로 선언해준다.
Record의 주요 특징
필드 유형과 이름만 필요한 불변 데이터 클래스
- 불변성(Immutability): Record의 모든 필드는 final이다. 이는 한 번 생성된 Record의 상태가 변경될 수 없음을 의미한다.
- 간결성(Conciseness): Record는 자동으로 모든 필드에 대한 생성자, 게터(Getter) 메서드, equals(), hashCode(), toString() 메서드를 생성한다.
- 데이터 운반용 용도: Record는 데이터 운반을 목적으로 설계되었다. 즉, 로직을 포함하기보다는 데이터를 저장하고 전달하는 데에 중점을 둔다.
Record 사용 예
public record UserRequest(String username, String email) {}
public record UserResponse(String username, String email, int status) {}
위 예에서 UserRequest와 UserResponse는 Record를 사용하여 정의되었다. 이들은 각각 사용자의 요청과 응답을 표현하는 불변 객체다. Java Record를 사용함으로써, 각 필드에 대한 생성자와 게터, 그리고 equals(), hashCode(), toString() 메서드가 자동으로 생성된다. 따라서 추가적인 메서드 구현 없이 이러한 기능들을 바로 사용할 수 있다.
Record의 제한 사항
- Record는 확장할 수 없다. 즉, 다른 클래스를 상속하거나 다른 Record를 상속할 수 없다.
- Record 내부에는 인스턴스 필드를 추가할 수 없다. 모든 데이터는 Record 선언 시 명시된 컴포넌트(필드)로 제한된다.
- Record는 abstract 또는 final로 선언할 수 없으며, 자동으로 final로 처리된다.
728x90