java record로 DTO를 만들어야하는 이유

Yellta·2025년 5월 6일

java

목록 보기
5/6

자바를 사용하면서 왜 record를 사용해야하는지 알아보자

Database 엔티티를 그대로 반환하는 것은 굉장히 위험하다.
Database의 구성을 그대로 노출하기 때문이다.

이때 DTO는 Database 엔티티의 과노출(엔티티 전부를 노출하는 것)을 방지할 수 있다.

이제 왜 DTO를 만들때 자바 record를 써야하는지 알아보자

what is record?

자바14에서 등장하고 16에서 안정화된 기능이다.

  • 불변성
  • 가독성(롬복을 통해 @Getter, @Setter, toString()을 지정하지 않아도 됨)
    의 특징을 가지고 있다.
public class ProductDTO {  
private Long id;  
private String name;  
private String description;  
private double price;  
  
public ProductDTO(Long id, String name, String description, double price) {  
this.id = id;  
this.name = name;  
this.description = description;  
this.price = price;  
}  
  
public Long getId() { return id; }  
public String getName() { return name; }  
public String getDescription() { return description; }  
public double getPrice() { return price; }  
}

recored사용한 DTO

public record ProductDTO(Long id, String name, String description, double price) {}

위처럼 간단하게 사용할 수 있다.

결론

DTO를 사용할땐 자바 record를 사용하도록 하자

하지만 커스텀 메서드를 지정하거나 뭔가 개인화작업이 필요한경우 class가 더 도움이 되는 경우도 있다.

개발팁

  1. MapStruct-> 하나하나 필드를 지정하는 것을 막아준다.
  2. 유지보수를 위해 레이어를 나누도록 하자
  3. DTO mappring을 수행할 때 Mapstruct를 사용하자
  4. Exception Handler를 사용하자(@ControllerAdvice)
  5. CRUD로직은 꼭 POSTman같은 툴로 확인을 해보자
  6. API Response를 검증할때는 DTO로 받아서 처리하자
  7. Error메세지는 항상 의미있는 메세지로 남겨두자

출처

profile
저 이제 풀스택하려구요 flutter + express.js공부하렵니다.

0개의 댓글