반응형
https://www.amitph.com/spring-entity-to-dto/
변환하는 방법을 소개하는 좋은 글이 있어서 남긴다.
- 생성자를 사용하는 방법
- 메서드를 사용하는 방법
- ModelMapper를 사용하는 방법
- MapStruct를 사용하는 방법
메서드를 사용하는 방법이 직관적
만약 변경해야할 필드가 많다면 ModelMapper, MapStruct를 사용하는 것이 용이할 것 같다.
MapStruct 사용
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
gradle에서 mapstruct가 lombok과 이슈를 일으킨다.
lombok이 mapstruct보다 위에 있으면 해결된다.
@Mapper
public interface UserMapper {
UserMapper mapper = Mappers.getMapper(UserMapper.class);
// dto -> entity
@Mapping(target = "userAge", source = "age")
@Mapping(target = "name" , source = "name", defaultValue = "Park")
UserEntity userDtoToEntity(UserDto userDto);
@Mapping(target = "age", source = "userAge")
UserDto userEntityToDto(UserEntity userEntity);
}
@Mapper
구현체는 mapstruct가 만들어준다.
import할 때 Mybatis의 @Mapper와 구분
@Mapping
필드명 불일치를 해결할 수 있다.
defaultValue도 설정할 수 있다.
@Test
void UserDtoToEntity(){
UserDto userDto = new UserDto(1, "cha", "email", 30);
UserEntity userEntity = UserMapper.mapper.userDtoToEntity(userDto);
System.out.println(userEntity);
}
참고
https://mapstruct.org/documentation/stable/reference/html/
http://modelmapper.org/getting-started/
https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=kbh3983&logNo=220988245343
반응형
'프로그래밍 > Spring' 카테고리의 다른 글
스프링 프레임워크 DI, AOP, 환경설정(intellij, gradle, tomcat) (0) | 2022.07.23 |
---|---|
[Spring] Bean을 싱글톤으로 사용해도 되는 이유 (0) | 2022.07.18 |
[Spring] Validation 유효성 검증 (0) | 2022.07.16 |
[Spring] Spring boot JPA 연동, myBatis 연동 (0) | 2022.05.16 |
[Spring] @Bean 과 @Component 차이 (0) | 2022.04.30 |