728x90
반응형
영양 진단 결과를 DTO로 깔끔하게 변환! ✨ resultMapper 활용법 🧐
개발하다 보면 영양 진단 결과 데이터를 이리저리 가공해야 할 때가 있죠? 🤔 이때, resultMapper가 등장하면 삶의 질이 수직 상승합니다! 🚀
resultMapper는 왜 쓸까요? 🤓
- 데이터 주고받기 편하게: 복잡한 NutritionDiagnosisResult 객체를 좀 더 가볍고 간편한 NutritionDiagnosisResultDTO 형태로 변환해 줍니다. 마치 택배 상자를 포장하는 것과 같죠! 🎁
- 코드 재사용성 UP!: 매번 변환 로직을 작성할 필요 없이, resultMapper를 여러 곳에서 재사용하여 개발 시간을 단축할 수 있습니다. ⏰
- 유지 보수 걱정 끝!: 변환 로직이 변경되더라도 resultMapper만 수정하면 되니, 유지 보수가 훨씬 쉬워집니다. 😊
코드 한 줄로 설명! 👇
return resultMapper.toDTO(result);
짠! 🤩 복잡한 NutritionDiagnosisResult 객체가 한 줄의 코드로 깔끔한 NutritionDiagnosisResultDTO로 변신! 이제 필요한 데이터만 쏙쏙 골라서 사용하세요! 🎈
핵심 포인트 🎯
- resultMapper는 MapStruct 라이브러리의 도움을 받아 동작합니다.
- NutritionDiagnosisResultMapper 인터페이스에 변환 규칙을 정의하면, MapStruct가 알아서 구현 코드를 생성해 줍니다. 신기하죠? ✨
- DTO는 데이터 전송 객체(Data Transfer Object)의 줄임말로, 데이터를 주고받는 데 특화된 객체입니다.
마무리하며... 🤗
resultMapper를 사용하면 복잡한 데이터 변환 과정을 간편하게 처리할 수 있습니다. 여러분도 꼭 활용해 보세요! 👍
이 글이 도움이 되셨다면 좋아요와 댓글 부탁드립니다! 🙏
//resultMapper 코드
import org.mapstruct.factory.Mapper;
@Mapper(componentModel = "spring")
public interface NutritionDiagnosisResultMapper {
NutritionDiagnosisResultDTO toDTO(NutritionDiagnosisResult result);
}
//resultMapper 코드 사용하는 ServiceImpl 코드
import org.mapstruct.factory.Mappers;
@Service
public class NutritionDiagnosisServiceImpl implements NutritionDiagnosisService {
@Autowired
private NutritionDiagnosisResultRepository resultRepository;
private final NutritionDiagnosisResultMapper resultMapper = Mappers.getMapper(NutritionDiagnosisResultMapper.class);
//...
@Override
public NutritionDiagnosisResultDTO saveDiagnosisResult(NutritionDiagnosis diagnosis, NutritionDiagnosisResultDTO resultDTO) {
NutritionDiagnosisResult result = NutritionDiagnosisResult.builder()
.basalMetabolicRate(resultDTO.getBasalMetabolicRate())
.activityMetabolicRate(resultDTO.getActivityMetabolicRate())
.totalMetabolicRate(resultDTO.getTotalMetabolicRate())
.weightLossCarbohydrate(resultDTO.getWeightLossCarbohydrate())
.weightLossProtein(resultDTO.getWeightLossProtein())
.weightLossFat(resultDTO.getWeightLossFat())
.weightMaintenanceCarbohydrate(resultDTO.getWeightMaintenanceCarbohydrate())
.weightMaintenanceProtein(resultDTO.getWeightMaintenanceProtein())
.weightMaintenanceFat(resultDTO.getWeightMaintenanceFat())
.bulkingCarbohydrate(resultDTO.getBulkingCarbohydrate())
.bulkingProtein(resultDTO.getBulkingProtein())
.bulkingFat(resultDTO.getBulkingFat())
.dailyRecommendedIntake(resultDTO.getDailyRecommendedIntake())
.nutritionDiagnosis(diagnosis)
.build();
//레포지터리에 접근하려면 엔티티를 빌더로 만듬.
resultRepository.save(result);
//복잡한 NutritionDiagnosisResult 객체가 NutritionDiagnosisResultDTO로 변환된다. 한 줄이면 끝!
//엔티티를 DTO로 변환함.
return resultMapper.toDTO(result);
}
}
'Coding 공부 > IntelliJ' 카테고리의 다른 글
[SpringBoot] 시큐리티 설정, 로그인 성공 처리 방법 (0) | 2024.06.18 |
---|---|
[SpringBoot] @ControllerAdvice, @ModelAttribute("member")로 세션 속 멤버 정보를 전달하기 (0) | 2024.06.17 |
[SpringBoot_JPA] 엔티티 어노테이션 @OneToMany, @Builder.Default, @BatchSize (0) | 2024.06.13 |
[SpringBoot_MariaDB] 파일 업로드 코드 추가 (0) | 2024.06.11 |
[IntelliJ] 스프링부트 파일 업로트 설정, Multipart (0) | 2024.06.11 |
댓글