Mapstruct 를 활용하면 Entity ↔ DTO 간 필드들을 쉽게 맵핑하여 사용할 수 있습니다. 필드가 많아지면 일일이 손수 맵핑하는게 여간 귀찮은 일이 아니며, 생각없이 맵핑하다가 타이핑 실수로 맵핑이 안되는 경우가 발생 할 수 있기 때문에 Mapstruct 를 잘 활용하는 것이 좋습니다. 이번 포스트에서는 mapstruct 로 간단히 entity 와 DTO 간 필드를 맵핑하는 법과 @Mapping 어노테이션을 활용하여 필드 데이터를 조작 맵핑하는 방법을 다뤄보려고 합니다. 더 고급 기술들이 있지만 저도 아직 실 사용하지 않는터라 다 다루지는 않겠습니다. Mapstruct 를 사용하기 위해서는 아래의 dependency 를 추가해줍니다. implementation 'org.mapstruct:map..
보통 날짜값을 사용할 때 db와 뷰와의 관계에서 컨버팅을 자주 하게 된다. DB에는 예쁘게 들어가있지만 사용자 화면에 그대로 뿌리면 보통 우리가 보던 포맷이 아니기 때문에 매우 별로다. 그래서 데이터 조회해올 때 컨버팅한다던가 애초에 db에 string 형태로 넣는 경우다. 현재 프로젝트에서 날짜 컬럼타입을 timestamp 형식으로 사용하고 있다. JPA 에서 조회해서 뷰에 그대로 뿌려보니 2023-07-05T16:05:41 날짜와 시간 값을 구분하는 T가 들어간다. 그래서 엔티티는 LocalDateTime 타입으로, DTO 는 String 타입으로 mapstruct 에서 자동으로 컨버팅 되도록 해보려고 한다. 엔티티와 DTO의 날짜 필드타입을 다르게 선언하였다. @Entity public class ..
JPA 쓰다보면 Entity 결과를 DTO 에 담아서 리턴해주는게 좋은데일일이 수작업으로 넘겨주는 방법도 있고 라이브러리로 매핑해주는 방식도 있는데간단한 결과야 수작업으로 담아서 리턴해주겠지만...리턴 데이터가 많을 경우엔 실수 할 확률이 매우 높아 엉뚱한 값에 매칭할 수도 있다.이런 수작업을 해결해 줄 ModelMapper 와 Mapstruct 매핑 라이브러리가 있는데 사용적인 면이나 성능면이나 이슈면에서 Mapstruct 가 이점이 더 많은 것 같아 Mapstruct 를 써보려고 한다. List sampleList = sampleRepository.findAll();// ModelMapperList sampleResult = sampleList.stream() .map(sampleEntity ..