-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
최현정이 #2
base: main
Are you sure you want to change the base?
최현정이 #2
Conversation
import { CheckNumberResponseDto } from "../dto/check-num-response.dto"; | ||
|
||
@Injectable() | ||
export class PhoneVerifyMapper { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mapper에 대한 얘기만 들어봤는데, 이렇게 사용하는거군요!
이렇게 하면 서비스 레이어에서 사용할 때, 코드도 명시적이고 실수로 값을 놓치지 않을 수도 있어서 좋네요👍 덕분에 알아갑니다😄
혹시, entity 자체에 메소드를 만드는 방식과 사용하는게 비슷하다고 생각이 드는데, 어떻게 생각하시나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제가 Mapper를 사용하는 주요 목적은 데이터를 하나의 형식에서 다른 형식으로 변환할 때 주로 사용합니다. 제가 여기서 사용한PhoneVerifyMapper 클래스는 CreateNumberRequestDto를 받아 PhoneVerify 엔티티로 변환하고, 엔티티의 상태를 업데이트하며, 엔티티를 CreateNumberResponseDto와 CheckNumberResponseDto로 변환하는 메소드들을 포함하고 있는데요😄
종훈님께서 말씀하신대로, 제가 생각하기에도 Mapper를 사용하면 코드가 굉장히 명확해지고 변환 로직을 서비스 레이어에서 분리하여 유지 관리가 용이하다고 생각해요.
질문에 대한 답변 말씀드리자면, 종훈님이 말씀하신 대로 entity 내에서 메소드를 만드는 방식과 상당히 유사합니다. 왜냐하면 둘 다 도메인 객체의 데이터를 다루기 때문이죠.
그러나 entity내에 메소드를 추가하는 것은 도메인 로직과 상태 변경을 해당 객체 내에서 처리하는 것을 의미한다고 생각하고, 이 방식은 객체지향 원칙에 더 가깝다는 생각이 드네요! entity 내부 메소드 방식은 entity가 자신의 데이터와 관련된 로직을 갖고 있어, 객체지향의 캡슐화와 단일 책임 원칙을 따른다고 생각합니다🙃
반면에 Mapper는 데이터 변환의 목적만을 갖고 있기때문에, 도메인 로직이 아닌 데이터의 구조 변환을 담당합니다.
그래서 제 생각은 도메인 중심 설계에서는 entity 내에 메소드를 두는 것을 선호할 수 있고, 데이터 변환 작업이 빈번한 경우에는 Mapper를 별도로 두는 것이 더 나을 수 있다는 생각입니다. 개인적으로 저는 Mapper를 사용하는 걸 선호하는 편입니다:)
쓰다보니까 엄청 장황하게 썼네요😂😂😂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
좋은 설명 너무 감사합니다😄
Mapper와 Entity내에 메소드를 정의 하는 것이 다른 목적을 가지고 있다는 것에 대해서 알아갑니다👍
자세한 설명과 개인적인 의견까지 말씀해주셔서 감사합니다😄
아직 많이 설계를 안해봐서 코드를 작성해보면서 어느 상황에 어떤 방법이 적절한지 알아가봐야겠네요😄
No description provided.