티스토리 뷰

반응형

API를 호출하여 원하는 데이터를 가지고 왔는데, 이 데이터를 그대로 저장하는게 아니라 가공하여 저장하고 싶은 데이터만 저장해야 하는 경우가 있습니다. 말로 설명하려니 조금 어려운 부분이 있네요...


왼쪽 Order에서 Data를 오른쪽 OrderDTO에 옮겨야 하는 경우!! 휴.,.

이럴경우 보통 Getter, Setter 또는 Builder Pattern을 사용하여 값을 옮겨 줍니다.

간단하게 변수가 2~5개 정도면 상관 없지만, 엄청 나게 많은 경우에는 가독성도 안좋고 노가다 작업이 될 것입니다. 

이럴 때 ModelMapper를 사용합니다. 밑에 Url을 클릭하면 정말 자세하게 설명이 나와있습니다.


http://modelmapper.org/getting-started/


먼저 의존성을 추가합니다. 그리고 Bean 설정을 해주고~ Autowired로 주입받으면 끝 입니다.


<!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.2</version>
</dependency>


@Bean
public ModelMapper modelMapper(){
return new ModelMapper();
}


@Autowired
private ModelMapper modelMapper;
OrderDTO orderDTO = modelMapper.map(order, OrderDTO.class);


order에 있는 Data를 OrderDTO에 옮긴다는 소스 입니다.


assertEquals(order.getCustomer().getName().getFirstName(), orderDTO.getCustomerFirstName());
assertEquals(order.getCustomer().getName().getLastName(), orderDTO.getCustomerLastName());
assertEquals(order.getBillingAddress().getStreet(), orderDTO.getBillingStreet());
assertEquals(order.getBillingAddress().getCity(), orderDTO.getBillingCity());


Junit을 사용하여 데이터 검증을 해볼 수도 있습니다.

기본적으로는 이름이 같다면 매칭이 되어 데이터가 옮겨 집니다. 이름 외에도 다양한 방법을 통해 데이터 매칭을 시킬 수 있습니다.

ex) 접근 권한, 이름 규칙, 제외시킬 것, 토큰 화 등등..


저는 아직 기본 설정 외에는 사용해 본 적은 없습니다.








반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함