평소와 같이 API를 개발하면서 DTO를 사용하던 도중에 인텔리제이가 아래처럼 warning을 띄웠습니다.

image.png

처음 보는 내용이라 Convert를 해봤더니 처음 보는 record 로 변환을 시키더라구요?

기존 DTO로 작성한 코드와 다르게 필드도 없고 Getter도 사라진 특이한 모양으로 변했는데 record 가 뭔지 굉장히 궁금해졌습니다.

Record?

Java 애플리케이션을 개발하다보면 다양한 계층 간 또는 서비스 간에 데이터를 전송해야 합니다. 이를 위해서 DTO(Data Tansfer Object, 데이터 전송 객체)를 사용하죠.

다들 알겠지만 DTO는 복잡한 동작이나 로직 없이 데이터를 담기 위한 간단한 객체입니다. 이 객체의 역할은 데이터를 묶어서 필요한 곳에 전달하는 것이죠.

그런데 Java 14에서 새로운 기능인 ‘Record’가 도입되었습니다. Record는 DTO와 마찬가지로 데이터를 담는 데 초점을 맞춘 특별한 클래스 유형입니다.

중요한 차이점은 Record는 우리가 반복적으로 해야 하는 많은 작업을 자동으로 처리해 준다는 것입니다.

예를 들어, *Getter(게터)를 자동으로 생성하고, 동등성 검사나 toString() 메서드도 알아서 처리해 줍니다. 이 기능은 Java 16에서 완전히 사용 가능해지면서 Record는 Java에서 데이터를 처리하는 깔끔하고 현대적인 방법이 되었습니다.

DTO vs Record, 무엇을 사용해야 할까?

그렇다면 무조건 Record를 사용하는게 좋은걸까요?

DTO와 Record 둘 다 데이터를 운반하는 비슷한 목적을 가지고 있습니다. 하지만 Java가 계속 발전함에 따라 언제 DTO를 사용하고 언제 Record를 사용해야 하는지 이해하는 것이 중요합니다.

그래서 DTO와 Record의 차이점을 알아보고, 특히 현대적인 Java 애플리케이션에서 어떤 것이 더 적합한지 결정하는 데 도움을 드리고자 합니다.