


data - dto - productDto 생성
package com.example.demo.data.dto;
import lombok.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder
public class productDto {
private String productId;
private String productName;
private int productPrice;
private int productStock;
private ProductEntity toEntity(){
return ProductEntity.builder()
.productId(productId)
.productName(productName)
.productPrice(productPrice)
.productStock(productStock)
.build();
}
}
상품 DTO 생성

data - entity - ProductEntity 생성
package com.example.demo.data.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.*;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "product")
public class productEntity {
@Id
String productId;
String productName;
Integer productPrice;
Integer productStock;
}
@Entity선언,
@Table(name = "product") : 데이터베이스에 테이블을 만듦, 이름은 name
@Id : pk값

data - repository - ProductRepository(interface) 생성
package com.example.demo.data.repository;
import com.example.demo.data.entity.ProductEntity;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<ProductEntity, String> {
}

data - dao - ProductDAO(interface) 생성
package com.example.demo.data.dao;
import com.example.demo.data.entity.ProductEntity;
public interface ProductDAO {
ProductEntity saveProduct(ProductEntity productEntity);
ProductEntity getProduct(String productID);
}

data - dao - impl -ProductDAOImpl
package com.example.demo.data.dao.impl;
import com.example.demo.data.dao.ProductDAO;
import com.example.demo.data.entity.ProductEntity;
import com.example.demo.data.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
public class ProductDAOImpl implements ProductDAO {
ProductRepository productRepository;
// 1. 클래스 이름과 동일한 생성자 부분 선언
@Autowired // 자동 연결
public ProductDAOImpl(ProductRepository productRepository){
this.productRepository = productRepository;
}
@Override
public ProductEntity saveProduct(ProductEntity productEntity){
productRepository.save(productEntity);
return productEntity;
}
@Override
public ProductEntity getProduct(String productId){
ProductEntity productEntity = productRepository.getById(productId);
return productEntity;
}
}
ProductRepository를 활용해서 코드를 작성해야함
Autowired로 자동연결함
하지만 ProductRepository에 보면 선언된게 하나도 없음
이전에 ProductRepository에서 extends JpaRepository했었는데 JpaRepository는 기본적으로 우리에게 save, getById등 기본 메소드를 제공해줌

새로운 DB생성
application.properties
# ========================
# DB 설정
# ========================
spring.datasource.url=jdbc:mariadb://localhost:3306/ws
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
# ========================
# JPA 설정
# ========================
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
gradle 추가
/* Database Driver (MariaDB) */
implementation 'org.mariadb.jdbc:mariadb-java-client:3.3.3'
-> 스프링 실행하면

테이블이 추가되어있음