프로젝트에서 Dto를 Entity로 상호 변환하는 과정에서 Entity의 생성자 대신 Dto에서 Static Factory Method를 사용하는 방식을 적용했고, Method 명을 어떻게 지으면 좋을지 고민하며 여러 자료를 찾아보고 정리하게 되었음
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PaymentResDto {
private UUID paymentId;
private String userName;
private UUID orderId;
private String pResultId;
private Long paymentAmount;
public static PaymentResDto from(Payment payment) {
return PaymentResDto.builder()
.paymentId(payment.getPaymentId())
.userName(payment.getUserName())
.orderId(payment.getOrder().getOrderId())
.pResultId(payment.getPResultId())
.paymentAmount(payment.getPaymentAmount())
.build();
}
}
public PaymentResDto getPayment(UUID paymentId, String userName){
Payment payment = paymentRepository.findOneByPaymentIdAndDeletedAtIsNull(paymentId).orElseThrow(()->{
log.error("결제 정보를 찾을 수 없음");
return new ResponseStatusException(HttpStatus.NOT_FOUND, "주문 정보를 찾을 수 없음");
});
if(!payment.getUserName().equals(userName)){
log.error("접근할 수 없음");
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "접근할 수 없음");
}
return PaymentResDto.from(payment);
}