걍판자 2024. 11. 23. 21:37
반응형

서문

왜 DTO라는게 필요한지, modelmapper는 뭐하는 역할인지 모르겠어서 정리해보았다.


DTO의 역할

    • DTO 는 Data Transfer Object 의 줄임말로 데이터 전송을 위해서만 사용하는 객체다. 그냥 데이터와 getter setter만 담는다.

public class MemberDTO {
    private Long id;
    private String name;
    private String email;
    
    // Getter와 Setter 메서드
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
  • DTO는 아래와 같이 컨트롤러나 클라이언트에 적용해야될때 사용된다.
  public MemberDTO getMemberInfo(Long id) {
    Member member = memberRepository.findById(id);
    MemberDTO memberDTO = new MemberDTO();
    memberDTO.setId(member.getId());
    memberDTO.setName(member.getName());
    memberDTO.setEmail(member.getEmail());
    return memberDTO;
}

 

  • DTO는 Entity와 다르게 로직을 포함하지 않으면 DB와 직접관계도 연관되어 있지 않다. 필요한 정보만 추출하여 전달하는 역할을 한다. 즉 Entity를 전송용으로 변형한 객체이다.
  • 불필요한 데이터를 제외하고 데이터 전송을 최적화, 보안을 더 잘 관리할 수 있다

 


ModelMapper의 역할

      •  ModelMapper는 DTO와 entity를 매핑해준다. 각 객체가 가지는 필드 하나하나를 매핑하는 번거로움을 줄이고 자동으로 일관성 있게 변환할 수 있게 한다. 

      • ModelMapper 적용전
  MemberDTO memberDTO = new MemberDTO(); 
  memberDTO.setId(member.getId()); 
  memberDTO.setName(member.getName());  
  memberDTO.setEmail(member.getEmail());   
  return memberDTO;
  • ModelMapper 적용후
return modelMapper.map(member, MemberDTO.class);

 

 

단, ModelMapper를 사용하기 위해서는 의존성 처리를 해야한다.

 

반응형