728x90
반응형
ModelMapper
ModelMapper는 Java 객체 간 속성 값을 자동으로 매핑해주는 라이브러리이다.
주로 데이터 전송 객체(DTO)와 도메인 객체 간의 변환 작업에 사용된다.
이 라이브러리를 사용하면 수동으로 속성 값을 복사하는 작업을 줄이고 코드를 간결하게 유지할 수 있다.
ModelMapper의 주요 특징
- 자동 매핑:
소스 객체와 대상 객체의 동일한 이름의 프로퍼티를 자동으로 매핑해줍니다. 이를 통해 수동으로 데이터를 복사할 필요가 없다.
- 유연한 매핑 전략:
속성 이름이 다르거나 매핑 전략이 다른 경우, ModelMapper를 확장하여 사용자 정의 매핑 전략을 구현할 수 있다.
- 높은 성능:
ModelMapper는 매핑 과정을 최적화하기 위해 동적 코드 생성 및 캐싱을 사용하여 높은 성능을 제공한다.
- 타입 안전성:
ModelMapper는 명시적인 타입 정의를 사용하여 런타임 시의 오류 가능성을 줄이고, 타입 안전성을 제공한다.
ModelMapper를 사용하면 개발자가 직접 객체 간의 속성 값을 복사하는 방식을 사용하는 것보다 간결한 코드를 작성할 수 있으며, 유지보수하기도 쉽다.
ModelMapper 예시
의존성 추가
implementation 'org.modelmapper:modelmapper:2.4.4'
<!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>3.0.0</version>
</dependency>
ModelMapper 빈 등록
@Configuration
public class ModelMapperConfig {
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
}
QnaCreateCond 클래스에서 toQnaDTO 메서드 수정
@Data
public class QnaCreateCond {
@NotBlank(message = "lqnTitle을 입력해주세요.")
String lqnTitle;
@NotBlank(message = "lqnContent을 입력해주세요.")
String lqnContent;
public LabelQnaDTO toQnaDTO(ModelMapper modelMapper){
return modelMapper.map(this, LabelQnaDTO.class);
}
}
서비스에서 toQnaDTO 메서드 사용 시 ModelMapper 인스턴스 전달
@Service
public class QnaService {
private final ModelMapper modelMapper;
// 생략...
public void createQna(QnaCreateCond qnaCreateCond) {
LabelQnaDTO labelQnaDTO = qnaCreateCond.toQnaDTO(modelMapper);
// 다른 로직 처리...
}
}
이렇게 구성하면 QnaCreateCond 객체와 LabelQnaDTO 객체의 동일한 프로퍼티 이름을 가진 값들이 자동으로 매핑된다.
ModelMapper는 꽤 유연한 라이브러리이며, 매핑 전략을 변경하거나 커스터마이징도 가능하다.
자세한 내용과 사용법은 ModelMapper 공식 문서를 참고하세요.
728x90
반응형
'개발중 > Java' 카테고리의 다른 글
[JAVA] ConcurrentHashMap 에 대해서 (0) | 2024.11.04 |
---|---|
Java 개발자라면 알아야하는 질문들이라길래 나는 잘 알고 있는가 ? (0) | 2023.08.07 |
[JAVA] 문자열 받고, 초성으로 반환해주자. (0) | 2023.01.25 |
[Gson] String => Object Array 활용하기 (0) | 2022.11.29 |
65279 아스키코드가 나와서 문자열 비교 안됨 ?! 😅 (1) | 2022.10.19 |