인프런 커뮤니티 질문&답변

감바스님의 프로필 이미지

작성한 질문수

코딩으로 학습하는 리팩토링

리팩토링 3. 필드 이름 바꾸기

레코드에 대해 질문 있습니다.

해결된 질문

작성

·

35

0

  1. DTO 대신 레코드 위주로 사용해도 될까요?

  2. 만약 DTO에 있는 필드중에서 값 변경이 자주 발생한다면 레코드가 아닌 DTO를 유지해서 사용하는게 좋을까요?

답변 2

0

백기선님의 프로필 이미지
백기선
지식공유자

네 레코드를 지원하는 자바 버전을 사용한다면 레코드를 사용해서 DTO를 만들어도 됩니다.

이상적으로 값을 전달하는데만 사용이 되어야 하니까 그 안에 있는 값들은 변경이 되지 않는게 좋을텐데요. 변경이 되어야 한다면 레코드를 써도 변경이 가능하고, DTO에 세터를 만들어도 값은 변경이 가능하니까, 그런 관점에 둘이 큰 차이가 없어 보입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 감바스님 질문 감사드립니다.

  1. DTO 대신 레코드 사용: 레코드(Record)는 주로 불변 객체를 만들 때 사용하는데, 이는 데이터 무결성을 유지하는 데 큰 도움이 됩니다. DTO(Data Transfer Object)는 보통 데이터를 여러 계층 간에 이동시킬 때 사용됩니다. 레코드로 대체할 수 있는 상황이 많지만, 레코드를 사용하려면 해당 객체의 불변성을 유지할 수 있는지 확인해야 합니다. 불변성 유지가 중요하지 않은 경우에는 여전히 DTO를 사용하는 것이 더 적절할 수 있습니다.

  2. 값 변경이 자주 발생하는 필드: DTO는 값 변경이 가능한 객체로 설계되기 때문에 이런 상황에서 유리합니다. 레코드는 불변 객체이므로 변경이 필요한 상황에서는 부적절할 수 있습니다. 값이 자주 바뀌는 필드가 있다면 DTO를 유지하는 것이 좋은 접근일 수 있습니다.

관련된 토론과 유사한 사례를 확인하려면 아래의 링크들을 참고하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.