mysql -u root -p
sql에 집인 후 아래 명령어를 차례대로 수행
// DB 생성
create database jpa character set utf8mb4 collate utf8mb4_general_ci;
// 유저 생성
CREATE USER 'jpauser'@'localhost' IDENTIFIED BY '1234';
// 유저에게 특정 DB 관한 주기
GRANT ALL PRIVILEGES ON jpa.* TO 'jpauser'@'localhost';
FLUSH PRIVILEGES;
// template -------------------------------------------------------
create database {DB 이름} character set utf8mb4 collate utf8mb4_general_ci;
CREATE USER '{유저 이름}'@'localhost' IDENTIFIED BY '{비밀번호}';
GRANT ALL PRIVILEGES ON {DB 이름}.* TO '{유저이름}'@'localhost';
FLUSH PRIVILEGES;
root로 들어온 sql을 종료 (mac은 'ctrl+z'면 종료 가능 )
mysql -u jpauser -D jpa -p
// template ----------------------------------------
mysql -u {user 이름} -D {DB 이름} -p
jpauser로 접속해서 USER 테이블 생성 후 확인
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SHOW TABLES;

spring.application.name=JPA-test
server.servlet.encoding.force-response=true
spring.config.import=optional:file:.env.dev[.properties]
# 데이터베이스 연결 설정
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER_NAME}
spring.datasource.password=${DB_USER_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA (Hibernate) 설정
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.mysql:mysql-connector-j'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok' // 테스트를 위한 세팅
testImplementation 'org.projectlombok:lombok' // 테스트를 위한 세팅
}
package com.ohgiraffers.jpayouthdepartmentregister.entity;
import jakarta.persistence.*;
import lombok.*;
@Getter //lombok getter
@Setter //lombok setter
@Entity
@NoArgsConstructor
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String name;
@Column
private String description;
}
package com.ohgiraffers.jpayouthdepartmentregister.repository;
import com.ohgiraffers.jpayouthdepartmentregister.entity.Product;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductJpaRepository extends JpaRepository<Product, Long> {
}
package com.ohgiraffers.jpayouthdepartmentregister.controller;
import com.ohgiraffers.jpayouthdepartmentregister.entity.Product;
import com.ohgiraffers.jpayouthdepartmentregister.repository.ProductJpaRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@Controller
@RequiredArgsConstructor
public class ProductController {
private final ProductJpaRepository productRepository;
@PostMapping("/product/save")
public ResponseEntity<?> personSave(@RequestBody Product product) {
Product res = productRepository.save(product);
try {
return ResponseEntity.ok().body(res);
}catch (Exception e) {
return ResponseEntity.internalServerError().body("Failed to get all member data: " + e.getMessage());
}
}
}
사진과 같이 src/와 동일한 경로에 http/에 파일을 만들면 됩니다. 만약 http/가 없다면 만들어서 사용하고 굳이 product.http 이름은 동일할 필요가 없습니다.
### post 테스트
POST localhost:8080/product/save
Content-Type: application/json
Accept: */*
{
"name": "product1",
"description": "nice "
}

3-1) spring boot 누르고 사진에 있는 화살표 클릭
3-2) mySQL 터미널에 SELECT * FROM jpa.product; 실행
3-3) 결과 확인
