[Spring] 스프링 modelmapper Java Entity Dto 매핑

    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

    댓글

    Designed by JB FACTORY