πŸ” Controller

@PostMapping("/register/product")
public ResponseEntity<Void> createProduct(@RequestBody RequestProduct requestProduct, HttpServletRequest request){
    User user = (User) request.getAttribute("user");
    boolean check = productService.CreateProduct(requestProduct, user);
    return (check) ?
            ResponseEntity.status(HttpStatus.OK).body(null) :
            ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}

μƒν’ˆ 등둝은 CRUD의 C에 ν•΄λ‹Ήν•˜κΈ°λ•Œλ¬Έμ— νšŒμ›κ°€μž…κ³Ό λΉ„μŠ·ν•œ 둜직

단지 μƒν’ˆ 등둝은 판맀자 κΆŒν•œμ„ κ°€μ§„ μ‚¬λžŒλ§Œ κ°€λŠ₯ν•˜κΈ°λ•Œλ¬Έμ— URIκ°€ /register둜 μ‹œμž‘

πŸ” RequestProduct DTO

@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RequestProduct {
    @NotEmpty(message = "μƒν’ˆλͺ… μž…λ ₯은 ν•„μˆ˜ μž…λ‹ˆλ‹€.")
    private String name; 

    @NotEmpty(message = "가격 μž…λ ₯은 ν•„μˆ˜ μž…λ‹ˆλ‹€.")
    private int price;

    @NotEmpty(message = "μΉ΄ν…Œκ³ λ¦¬ μž…λ ₯은 ν•„μˆ˜ μž…λ‹ˆλ‹€.")
    private String category;

    @NotEmpty(message = "상세섀λͺ… μž…λ ₯은 ν•„μˆ˜ μž…λ‹ˆλ‹€.")
    private String description;

    @NotEmpty(message = "μ‚¬μ΄μ¦ˆ μž…λ ₯은 ν•„μˆ˜ μž…λ‹ˆλ‹€.")
    private String size;

    @NotEmpty(message = "이미지 ν‚€ μž…λ ₯은 ν•„μˆ˜ μž…λ‹ˆλ‹€.")
    private String imgKey;

    @NotEmpty
    private String date;

    public Product toEntity(User user) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
        return Product.builder()
                .id(null)
                .name(name)
                .price(price)
                .category(category)
                .description(description)
                .size(size)
                .imgKey(imgKey)
                .date(LocalDateTime.parse(date, formatter))
                .hits(0)
                .favorite(0)
                .user(user)
                .build();
    }
}

Dtoλ₯Ό Entity둜 λ³€ν™˜ν• λ•Œ toEntityλΌλŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©

λ‚ μ§œλ₯Ό μ„€μ •ν•˜λŠ” 뢀뢄은 ν”„λ‘ νŠΈμ—”λ“œμ—μ„œλŠ” Date ν˜•μ‹μ΄ λ”°λ‘œ μ—†κ³  year, month, day λ“± 각 μš”μ†Œλ₯Ό 뽑아 String ν˜•νƒœλ‘œ λ§Œλ“€μ–΄ 보내기 λ•Œλ¬Έμ— LocalDateTime ν˜•μ‹μœΌλ‘œ λ§Œλ“€μ–΄ μ €μž₯ν•˜κΈ° μœ„ν•΄DateTimeFormatter μ‚¬μš©

ν˜„μž¬ ν”„λ‘œμ νŠΈμ—μ„œ λ°€λ¦¬μ΄ˆ λ‹¨μœ„κΉŒμ§€ μ €μž₯ν•  ν•„μš”μ„±μ€ μ—†λ‹€κ³  νŒλ‹¨ν–ˆκ³  초 λ‹¨μœ„κΉŒμ§€λ§Œ μ €μž₯

πŸ” Service

@Override
public boolean CreateProduct(RequestProduct requestProduct, User user){
    Product product = requestProduct.toEntity(user);

    Product createdProduct = productRepository.save(product);

    return !createdProduct.getName().isEmpty();
}

Entity둜 λ³€ν™˜ ν›„ μ˜μ†ν™”μ‹œμΌœ DB에 μ €μž₯

μ—¬κΈ°μ„œλ„ κ°„λ‹¨ν•˜κ²Œ Spring Data Jpa의 saveν•¨μˆ˜ μ‚¬μš©