[SpringBoot] API 설계 - JPA

끄적끄적·2023년 5월 22일
0
post-thumbnail

1. (entity) Product

@Table
@Entity
@ToString
@Getter
@Setter
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column
    private String name;

    @Column
    private Long price;

    public Product() {

    }
}

2. (dto) Product

public class Product {
    private final String name;
    private final Long price;

    public Product(String name, Long price) {
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }

    public Long getPrice() {
        return price;
    }

}

3. ProductJpaRepository

public interface ProductJpaRepository extends JpaRepository<Product, Long> {

}

1. 상품 등록 API - POST

  1. ProductController
@PostMapping("api/products")
    public String saveProduct(@RequestBody com.example.springboot.entity.Product product) {
        productService.save(product);
        return "정상 저장됐습니다.";
    }
  1. ProductService
public void save(com.example.springboot.Products.Product product) {
        productJpaRepository.save(product);
    }

2. 상품 조회 API - GET

  1. ProductController
@GetMapping("api/products")
    public List<com.example.springboot.entity.Product> findAll() { return productService.findAll(); }
  1. ProductService
 public List<com.example.springboot.entity.Product> findAll() {
        return productJpaRepository.findAll();
    }

3 상품 삭제 API - DELETE

  • ID를 이용해 삭제할 수 있다.
  1. ProductController
@DeleteMapping("api/products/{id}")
    public String delete(@PathVariable Long id) {
        productService.delete(id);
        return "삭제되었습니다.";
    }
  1. ProductService
 public void delete(Long id) {
        productJpaRepository.deleteById(id);
    }

2. Postman으로 확인하기

  • http://localhost:8080/api/products GET, POST, DELETE 모두 동일

1. POST

  • POST > Body > JSON > 이름, 가격 입력 > SEND

2. GET

  • 저장한 상품을 조회할 수 있다.

3. DELETE

  • http://localhost:8080/api/products + 상품 ID : 저장한 상품 삭제 가능
  • GET을 이용해 삭제가 됐는지 확인해보았다.

3. MySQL Workbench 확인하기

  • select*from sys.product;

1. POST

  • 저장한 마우스, 2000이 있는 걸 확인할 수 있다.

2. DELETE

  • 저장한 상품을 삭제해서 아무것도 남아있지 않다.

0개의 댓글