[Spring Data] JPA - Model Mapper

Seonghun Kim·2022년 9월 17일
0

Spring!

목록 보기
6/8
post-thumbnail

📌 Model Mapper

객체의 필드 값을 다른 객체의 필드 값으로 자동으로 맵핑

  • JPA에서는 Entity와 DTO(Data Transfer Object)가 구분되어 사용
  • DTO form에서 입력한 데이터를 DB에 저장하는 경우 DTO -> Entity 변환 과정이 필요하며, DB에서 데이터를 조회하여 form 형태로 보여주는 경우 Entity -> DTO 변환 과정이 필요
  • 해당 과정들을 수행하기 위해서는 직접 객체에 필드 값을 세팅해야하는 반복적인 작업이 필요

Entity (Member.java)

@Entity
@Getter @Setter
public class Member {

    @Id
    private Long id;

    private String name;

    private String email;

    private String password;

    private String address;

    private Role role;
}

DTO (MemberFormDto.java)

@Getter @Setter
public class MemberFormDto {

    private String name;

    private String email;

    private String password;
    
    private String address;
}

DTO -> Entity

Member createMember(MemberFormDto memberFormDto) {
    Member member = new Member();
    member.setName(memberFormDto.getName());
    member.setEmail(memberFormDto.getEmail());
    member.setPassword(memberFormDto.getPassword());
    member.setAddress(memberFormDto.getAddress());
    member.setRole(Role.USER);
    return member;
}
  • get set을 이용하여 직접 필드 값을 채우는 과정을 반복적으로 수행
  • 이러한 반복적인 작업을 줄이기 위해 ModelMapper 사용

✔ ModelMapper 사용

Dependency

<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>3.1.0</version>
</dependency>

DTO -> Entity

Member createMember(MemberFormDto memberFormDto) {
    ModelMapper modelMapper = new ModelMapper();
    Member member = modelMapper.map(memberFormDto, Member.class);
    member.setRole(Role.USER);
    return member;
}
  • ModelMapper 객체 생성
  • map 메서드에 변경할 객체와 변경하고 싶은 클래스를 인자로 전달
  • 필드명과 자료형이 같은 경우, 필드 값을 복사하는 과정을 수행
  • 복사되지 않은 필드는 직접 값을 채워서 entity 생성

0개의 댓글