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

 

 

'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