inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Readable Code: 읽기 좋은 코드를 작성하는 사고법

마무리하며

toEntity

232

wnsqud70

작성한 질문수 58

1

안녕하세요 선생님 강의 잘 보고 있습니다.

 

강의 내용과는 좀 관련이 없는 개인적인 질문인데

dto -> entity / entity ->dto 로 변환할때 선생님은 어떻게 풀어서 하시나요(mapper ,builder ..etc)? 물론 팀마다 컨벤션이 있고 뭐가 최고라고 말할 수는 없지만 정말 개인적으로 궁금해서 질문 드립니다! 감사합니다

객체지향 리팩토링 클린코드-기획전

답변 2

2

박우빈

안녕하세요, wnsqud70 님!

저는 DTO 내부에 변환 로직을 두는 편이에요.
물론 말씀하신대로 Mapper, Builder 등을 따로 둘 수도 있겠지만, 굳이 따로 두어야 할 이유가 있는 것이 아니라면 각 DTO가 필요에 맞게 Entity와의 관계를 가져가면 된다고 생각합니다.

  • DTO -> Entity : DTO가 가지고 있는 값으로 Entity를 생성하는 메서드 (toEntity())

     

  • Entity -> DTO : 외부에서 Entity를 받아 DTO를 생성하는 정적 팩터리 메서드 (of(E e))

감사합니다. 🙂

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

DTO와 엔티티 간의 변환에 대해 질문해 주셨네요. 이 주제는 많은 개발자들이 다양한 접근 방식을 사용하기 때문에 흥미로운 주제입니다. 보통 아래와 같은 방법들이 사용됩니다:

  1. 수동 매핑: 가장 간단하면서도 제어가 가능한 방법으로, 필요에 따라 명시적으로 코드를 작성하여 변환합니다. 간단한 프로젝트나 성능이 중요한 경우 유용합니다.

  2. Mapper 라이브러리 사용: MapStruct와 같은 라이브러리를 사용하여 DTO와 엔티티 간의 변환을 자동화합니다. 이 방법은 설정만 잘 해두면 간단히 사용 가능합니다. 특히 프로젝트 규모가 크거나, 변환 작업이 많이 필요한 경우 효과적입니다.

  3. Builder 패턴: 복잡한 객체 생성 과정이 필요한 경우에는 Builder 패턴을 사용하여 객체를 생성할 수 있습니다. 이는 특히 필드 수가 많은 경우에 유용합니다.

각 방법은 프로젝트의 요구사항에 따라 적절하게 선택될 수 있습니다. 직접 구현 시의 이점은 높은 제어와 유연성인 반면, 라이브러리를 사용하면 중복 코드 작성을 줄일 수 있고, 유지보수가 용이하다는 장점이 있습니다.

위의 방법들 중에서 본인의 프로젝트 및 팀의 상황에 맞는 최적의 방법을 선택하시길 추천드립니다. 추가적으로 궁금한 부분이 있다면 언제든지 질문해 주세요.

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

[강의 질문] 메서드 선언부

0

90

1

[강의 질문] 메서드와 추상화

0

61

2

DIP 개념에 대한 질문입니다.

0

64

1

만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민

0

86

2

DIP 설명 후반부에 IOC에 대한 질문 드립니다.

0

80

2

안녕하세요 ! 혹시 자바가 아닌 다른 객체지향 언어를 알고있어도 강의를 들어도 괜찮을까요 ?!

0

71

1

안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.

1

64

2

자바 record 사용에 대해서 질문 드립니다!

0

128

2

강의 내용 정리 및 자료 제작 툴 문의 드립니다.

0

136

2

사용할 변수 가깝게 선언하기 질문

0

93

1

오버 엔지니어링

0

151

2

학습용 java/spring 오픈소스 추천

1

368

2

중복된 메서드 줄이는 방법

0

185

2

MarketPlace에서 Sonarlint 검색이 안됩니다.

0

417

3

isLandMineCell() 메서드 질문

0

209

1

Cell[][]BOARD 매개변수받기

0

153

2

ConsoleInputHandler에서 왜 final붙여야 하는지

0

194

1

정적 생성자 메서드 of, from

0

265

2

Getter관해서

0

148

3

이름 바꾸기

0

129

2

stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??

0

164

2

현업에서 ISP를 도입하려는데 인터페이스 설계에 있어서 의문이 있습니다.

0

208

2

null을 가질 수 있는 값을 인자로 넘겨야 하는 경우

0

253

3

리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..

0

255

2