hayu's 개발 일지

[TIL]240326 Dto의 toEntity 본문

프레임워크/spring

[TIL]240326 Dto의 toEntity

hayu00 2024. 3. 26. 21:59

toEntity 란?

  • toEntity는 Dto에서 엔티티 객체로 변환하는 메서드이다.
  • Spring에서는 요청을 DTO형태로 받아 엔티티 객체로 변환하여 데이터 베이스에 저장하거나 업데이트할 때 toEntity를 사용된다.
 @Getter
    public static class CreateReviewRequestDto {

        @NotBlank(message = "리뷰를 입력해주세요.")
        private String contents;

        @PositiveOrZero(message = "별점을 입력해주세요.")
        private int rating;

        public Review toEntity(Member member, Product product) {
            return Review.builder()
                    .contents(this.contents)
                    .rating(this.rating)
                    .member(member)
                    .product(product)
                    .build();
        }

    }
  • toEntity를 사용하면 서비스에서 코드가 간결해진다.
@Transactional
    public CreateReviewResponseDto createReview(Long productId, String email, CreateReviewRequestDto reviewRequestDto) {
        Member member = memberRepository.findByEmail(email)
                .orElseThrow(() -> new BadRequestException(ErrorCode.NOT_FOUND_MEMBER_EMAIL.getMessage()));

        Product product = productRepository.findById(productId)
                .orElseThrow(() -> new BadRequestException(ErrorCode.NOT_FOUND_PRODUCT.getMessage()));

        Review review = reviewRepository.save(reviewRequestDto.toEntity(member, product));
        return new CreateReviewResponseDto(review);
    }