0. Service
Service는 웹 어플리케이션에서 비즈니스 로직을 처리하는 영역이다. Controller에서 클라이언트로부터 들어온 요청에 대해 처리한 Service를 선택한다. 그리고 Service에서는 요청 데이터를 처리한 후 DAO로 보내 DB와 작업을 수행하도록 한다.
1. ProductService
package com.web.springtest00.product.service;
import com.web.springtest00.data.dto.ProductDto;
import com.web.springtest00.data.dto.ProductResponseDto;
public interface ProductService {
ProductResponseDto getProduct(Long number);
ProductResponseDto saveProduct(ProductDto productDto);
ProductResponseDto changeProductName(Long number, String name) throws Exception;
void deleteProduct(Long number) throws Exception;
}
2. ProductServiceImpl
package com.web.springtest00.product.service.impl;
import java.time.LocalDateTime;
import org.springframework.stereotype.Service;
import com.web.springtest00.data.dao.ProductDAO;
import com.web.springtest00.data.dto.ProductDto;
import com.web.springtest00.data.dto.ProductResponseDto;
import com.web.springtest00.data.entity.Product;
import com.web.springtest00.product.service.ProductService;
@Service
public class ProductServiceImpl implements ProductService {
private final ProductDAO productDAO;
public ProductServiceImpl (ProductDAO productDAO){
this.productDAO = productDAO;
}
@Override
public ProductResponseDto getProduct(Long number) {
Product product = productDAO.selectProduct(number);
if(product == null) return null;
ProductResponseDto productResponseDto = new ProductResponseDto();
productResponseDto.setNumber(product.getNumber());
productResponseDto.setName(product.getName());
productResponseDto.setPrice(product.getPrice());
productResponseDto.setStock(product.getStock());
return productResponseDto;
}
@Override
public ProductResponseDto saveProduct(ProductDto productDto) {
Product product = new Product();
product.setName(productDto.getName());
product.setPrice(productDto.getPrice());
product.setStock(productDto.getStock());
product.setCreatedAt(LocalDateTime.now());
product.setUpdatedAt(LocalDateTime.now());
Product savedProduct = productDAO.insertProduct(product);
ProductResponseDto productResponseDto = new ProductResponseDto();
productResponseDto.setNumber(savedProduct.getNumber());
productResponseDto.setName(savedProduct.getName());
productResponseDto.setPrice(savedProduct.getPrice());
productResponseDto.setStock(savedProduct.getStock());
return productResponseDto;
}
@Override
public ProductResponseDto changeProductName(Long number, String name) throws Exception {
Product changedProduct = productDAO.updateProductName(number, name);
ProductResponseDto productResponseDto = new ProductResponseDto();
productResponseDto.setNumber(changedProduct.getNumber());
productResponseDto.setName(changedProduct.getName());
productResponseDto.setPrice(changedProduct.getPrice());
productResponseDto.setStock(changedProduct.getStock());
return productResponseDto;
}
@Override
public void deleteProduct(Long number) throws Exception {
productDAO.deleteProduct(number);
}
}
'Java > Spring Boot' 카테고리의 다른 글
| [Spring Boot] 외부 properties 파일 불러오기 (0) | 2023.04.03 |
|---|---|
| [Spring Boot] Controller 생성 (0) | 2023.03.28 |
| [Spring Boot] DAO 생성 (0) | 2023.03.28 |
| [Spring Boot] DTO 생성 (0) | 2023.03.28 |
| [Spring Boot] Repository 생성 (0) | 2023.03.28 |