개념
Record: 불변 객체를 생성할 때 사용하는 클래스이다.
장점
DTO를 Record로 사용하면 아래와 같은 이점이 있음
- 불변성: 한번 생성된 인스턴스는 수정 불가능
- 즉, 데이터의 무결성을 유지하는데 도움을 줌
- 간결한 코드: 다양한 메서드를 자동으로 생성
- 일반 class 형태로 불변 객체를 생성하려면, 에너테이션이나 메서드를 작성해야함
단점
처음 선언할 때 제약이 존재
- final 클래스의 특징을 가짐
- 상속 불가
- abstract 선언 불가
- static이 아닌 멤버 변수 선언 불가
정리
DTO가 단순 데이터 전달용으로 사용되는 객체임을 고려할 때, 레코드를 사용하는 것이 단점보다 장점이 더 부각됨
-> 특별한 일이 없다면, DTO는 레코드로 작성하자!
사용법
선언
public record <레코드 이름>(
필드1,
필드2,
...
){ }
예시
class로 작성한 dto | record로 작성한 dto |
Getter, 생성자에 관한 애너테이션 O | Getter, 생성자에 관한 애너테이션 X |
![]() |
![]() |
호출
<레코드 변수>.<필드 이름>() 의 형태로 필드값을 가져올 수 있음
예시
Record 선언부 | Record 호출부 |
![]() |
![]() |
참고 자료
https://velog.io/@oyoungsun/Java-RECORD-DTO를-record-type으로-설정하는-이유
velog
velog.io
https://devjaewoo.tistory.com/160
[비교] DTO Class vs Record
Intro 기존에 Java 11만 쓰다가 이번 프로젝트에서 Java 17을 처음 써보는데, 클래스 생성 중 Record라는 메뉴가 생겨서 찾아보니 DTO로 쓰기 딱이라는 생각이 들었다. Record는 Java 16에서 정식 출시된 새
devjaewoo.tistory.com
'Spring > 기본 구성' 카테고리의 다른 글
8. Repository 클래스 with. JDBC, JPQL(JPA), QueryDSL (0) | 2024.01.18 |
---|---|
7. Entity 클래스 (0) | 2024.01.18 |
6. ORM 개념 with. Spring Data JPA (0) | 2024.01.18 |
5. Service 클래스 (0) | 2024.01.18 |
4. Controller 클래스 with. DTO (0) | 2024.01.18 |