[Spring] 스프링 modelmapper Java Entity Dto 매핑
- 코딩/Spring
- 2022. 11. 3.
Spring modelmapper Java Entity Dto 매핑하는 방법
1. 의존성 추가
build.gradle 파일에 ModelMapper 의존성을 추가합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.modelmapper:modelmapper:2.4.2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
2. Entity와 DTO 클래스 작성
먼저, Entity 클래스와 DTO 클래스를 작성합니다. 여기에서는 Person Entity와 PersonDto DTO를 사용
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
private String email;
private LocalDate birthday;
// getter/setter 메소드 생략
}
public class PersonDto {
private Long id;
private String firstName;
private String lastName;
private String email;
private String birthday;
// getter/setter 메소드 생략
}
3. ModelMapper 설정
Spring Boot에서는 ModelMapper를 Bean으로 등록하여 사용할 수 있습니다. 이를 위해, 다음과 같이 @Configuration 어노테이션을 사용하여 ModelMapper Bean을 등록
@Configuration
public class AppConfig {
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
}
4. Entity와 DTO 매핑
Person Entity를 PersonDto DTO로 매핑하는 예제입니다. 조회된 Person Entity를 PersonDto DTO로 매핑하고, birthday 필드를 문자열로 변경합니다.
@Service
public class PersonService {
@Autowired
private PersonRepository personRepository;
@Autowired
private ModelMapper modelMapper;
public PersonDto getPerson(Long id) {
Person person = personRepository.findById(id).orElse(null);
if (person == null) {
return null;
}
PersonDto personDto = modelMapper.map(person, PersonDto.class);
personDto.setBirthday(person.getBirthday().toString());
return personDto;
}
}
5. DTO 사용
PersonDto DTO를 컨트롤러에서 사용
@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("/{id}")
public ResponseEntity<PersonDto> getPerson(@PathVariable Long id) {
PersonDto person
'코딩 > Spring' 카테고리의 다른 글
[Spring] JPA 중복 컬럼 상속으로 생성하는 방법 (0) | 2022.11.07 |
---|---|
[Spring] Jpa Paging 페이징 처리방법 (0) | 2022.11.07 |
[Spring] 싱글톤 패턴 사용 이유, 예시, 단점, 사용법 (0) | 2022.05.06 |
[Spring] ResponseEntity 사용법 (0) | 2022.05.06 |
[Spring] 스프링 예외 처리 방법 2가지(@ExceptionHandler, @ControllerAdvice) (0) | 2022.05.05 |