Spring
Java - record
Dev Park
2/23/2024
29 views
서론
자바에서 변경 불가능한 데이터를 객체간에 전달할 때 보통 또 다른 객체를 만들어 전달한다.
이를 DTO 등 여러 명칭으로 부르곤 하는데 이때 사용할 수 있는 Java record에 대해서 알아보자.
record
자바 레코드는 JAVA 14 에서 추가되었다.
보통 불변하는 데이터를 저장하고, 전달하는데 사용되는 특수한 객체 형태이다.
특징으로는 Getter 메소드, equals 메소드, toString 메소드 등을 자동으로 생성해주며, 따로 작성할 필요가 없게 해준다.
또한 다른 객체 데이터 클래스와 다른점은 데이터를 불러올때 'get(name)()' 이 아니라 '(name)()' 처럼 get을 앞에 붙이지 않는다는 것이다.
그리고 한번 저장된 데이터를 수정하는게 불가능하다는 것도 큰 특징 중 하나다.
기존 데이터 클래스와 record를 예시 코드를 통해 비교해 보자.
[기존]
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
// 나머지 Getter와 Setter 등 메소드
}
[Record]
public record Student(
String name,
int age
) {}
한눈으로 봐도 코드가 꽤 간결해진 것을 알 수 있다.
레코드를 사용하면 기존에 작성해야했던 코드를 줄일 수 있어 생산성에 도움을 준다.
[Record]
public record Student(
@NotNull
String name,
@NotNull
int age
) {}
그리고 위와 같이 Valid 어노테이션 또한 달 수 있다.
추가로 record는 final 클래스이기때문에 상속이 불가능하다는 특성을 가지고 있다.
그 이유때문에 JPA등의 Entity 객체로는 사용하지 못한다.