Spring/기본 구성

+4. DTO를 record type으로 설정

초코chip 2024. 2. 6. 23:15

개념

Record: 불변 객체를 생성할 때 사용하는 클래스이다.

 

장점

DTO를 Record로 사용하면 아래와 같은 이점이 있음

  1. 불변성: 한번 생성된 인스턴스는 수정 불가능
    • 즉, 데이터의 무결성을 유지하는데 도움을 줌
  2. 간결한 코드: 다양한 메서드를 자동으로 생성
    • 일반 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