- 불변(immutable) 객체를 쉽게 생성할 수 있도록 하는 유형의 클래스입니다.
- JDK16에서 정식 스펙으로 포함되었습니다.
public recordStudent(String name, int age) {}
record를 사용하면 아래의 내용들을 직접 구현하지 않아도 자동으로 생성됩니다.
- 클래스 상속제한 ( final class )
- 필드 캡슐화 및 불변화 ( private final field )
- 생성자 메서드 ( All argument )
- getters 메서드
- equals 메서드
- hashcode 메서드
- toString 메서드
이것이 가능한 이유는, 컴파일 타임에 컴파일러가 코드를 추가해주기 때문입니다.
제공 메서드들 재정의 가능
Q. Entity를 불변 객체로 만들면 좋을 것 같은데,
레코드(record)를 JPA의 Entity 클래스로 사용할 수 없을까요?
- 레코드는 **final 클래스(상속불가)**이고, abstract로 선언할 수 없습니다.
- 따라서 프록시 객체를 생성할 수 없어 ****JPA Entity 클래스에 사용할 수 없다.