• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문

22.03.30 19:29 작성 조회수 171

0

선생님 아래 코드에서 modelmapper 를 활용해주셨는데 혹시 html에서 name ? 속성으로 넘어오는 값들에 대해서 dto의 필드 이름과 매치하면 자동으로 account 에 매칭되고 그냥 mapper 를 쓸  필요없이 

아래문장만 있으면 될거같은데 굳이 mapper 를 통해서 account 객체를 빼준 이유가 있을까요?

account.setPassword(passwordEncoder.encode(account.getPassword()));

답변 1

답변을 작성해보세요.

0

네 

그건 역할에 관한 부분이라 보시면 됩니다.

클라이언트로 부터 전달되는 값은 데이터 전송 객체인 DTO 가 받는 역할이고  Account 엔터티는 DB 와의 매핑에 사용되는 역할이라 정한 것입니다.

즉 Account 엔터티가 클라이언트로 부터 전달되는 값을 바로 받는 역할을 하지 않도록 하고 그 역할은 DTO 에 일임하고 이후 DTO 에 저장된 값을 엔터티로 복사해서 이후 처리를 하고 있습니다.

그리고 가능한 한 DTO 와 엔터티는 역할에 맞게 구분해서 작업하는 것이 추천하는 방식이긴 하지만 강제 사항은 아니기 때문에 실행환경에 따라 적절하게 결정하시면 됩니다.