https://github.com/hongbre/spring-jpashop

 

GitHub - hongbre/spring-jpashop

Contribute to hongbre/spring-jpashop development by creating an account on GitHub.

github.com

 

'실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발' 강의를 쭉 들었는데, Spring 기본만 하고 JPA 기본은 안 하니 이해가 안 된다. JPA 기본 먼저 듣고 강의 다시 들으면서 정리하기로 했다.

'스터디 > JPA' 카테고리의 다른 글

JPA 스터디1 - 2  (3) 2025.06.16
JPA 스터디1 - 1  (1) 2025.06.10

요구사항 분석

기능목록

  • 회원 기능
    • 회원 등록
    • 회원 조회
  • 상품 기능
    • 상품 등록
    • 상품 수정
    • 상품 조회
  • 주문 기능
    • 상품 주문
    • 주문 내역 조회
    • 주문 취소
  • 기타 요구사항
    • 상품은 재고 관리가 필요하다.
    • 상품은 카테고리로 구분할 수 있고 도서, 음반, 영화가 있다.
    • 상품 주문 시 배송 정보를 입력할 수 있다.

도메인 모델과 테이블 설계

도메인

엔티티

테이블

엔티티 클래스 개발

https://github.com/hongbre/spring-jpashop

 

GitHub - hongbre/spring-jpashop

Contribute to hongbre/spring-jpashop development by creating an account on GitHub.

github.com

 

  1. 다중성(관계의 수) 기준
    • OneToOne(1:1)
      • 하나의 엔티티가 다른 엔티티와 오직 하나의 관계만 가질 때 사용
      • ORDERS와 DELIVERY
    • ManyToOne(N:1)
      • 여러 엔티티가 하나의 엔티티와 관계를 맺을 때 사용
      • ORDER_ITEM과 ITEM
    • OneToMany(1:N)
      • 하나의 엔티티가 여러 엔티티와 관계를 맺을 때 사용
      • ORDERS와 ORDER_ITEM
    • ManyToMany(N:N)
      • 여러 엔티티가 서로 다수와 관계를 맺을 때 사용
      • 실무에서는 사용을 지양하고, 중간 엔티티를 만들기를 권장
      • ITEM과 CATEGORY
  2. 방향 및 연관관계의 주인
    • 단방향
      • 한쪽 엔티티만 다른 엔티티를 참조
      • ORDER_ITEM과 ITEM의 관계만 단방향
    • 양방향
      • 양쪽 엔티티가 서로를 참조
    • 연관관계의 주인(Owner)
      • 외래키(FK)를 가진 엔티티가 연관관계의 주인이 된다
      • 주인 엔티티에서만 연관관계의 변경(CUD)이 가능

'스터디 > JPA' 카테고리의 다른 글

JPA 스터디1 - 3  (0) 2025.07.01
JPA 스터디1 - 1  (1) 2025.06.10

Spring initializr로 프로젝트 생성

  • Porject: Gradle-Groovy
  • Language: Java
  • Spring Boot: 3.5.0
  • Project Metadata:
    • Group: jpabook
    • Artifact: jpashop
    • Name: jpashop (기본적으로 Artifact 동일)
    • Description: Demo Project for Spring Boot (기본값)
    • Package Name: jpabook.jpashop (Group.Artifact)
    • Packaging: Jar
    • Java: 21
  • Dependencies
    • Spring Web (웹 애플리케이션 개발 필수)
    • Lombok (getter/setter 등 어노테이션으로 생성)
    • Thymeleaf (템플릿 엔진)
    • Spring Data JPA (JPA 사용을 위함)
    • H2 Database (개발용으로 많이 쓰는 데이터베이스)
    • Validation (자바 빈 객체의 값 검증)

깃헙 레포지토리 생성해서 연결

Lombok 적용 테스트

package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class LombokTest {

    private String data;
}

 

@Getter@Setter를 통해 data 값을 넣고 조회하는 LombokTest 클래스 생성

package jpabook.jpashop;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JpashopApplication {

    public static void main(String[] args) {

        // Lombok 적용 테스트
        LombokTest lombokTest = new LombokTest();
        lombokTest.setData("Test");
        System.out.println(lombokTest.getData());

        SpringApplication.run(JpashopApplication.class, args);
    }

}

 

콘솔에 "Test"가 출력되며 확인 완료

JPA와 DB 설정

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/Downloads\spring\springjpa1-v20250325/jpashop
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
#        show_sql: true
        format_sql: true
logging:
   level:
     org.hibernate.SQL: debug
     org.hibernate.orm.jdbc.bind: trace

 

H2 데이터베이스와 연결하고, JPA를 설정한다. spring.jpa.hibernate.ddl-auto의 값은 다음과 같다.

  • none: 스키마를 자동으로 생성하거나 변경하지 않음
  • validate: 엔티티와 스키마가 일치하는지 검증만 하며 변경하지 않음
  • update: 엔티티 변경사항을 반영해 스키마를 자동 갱신함(기존 데이터 유지, 컬럼 삭제 등은 미반영)
  • create: 기존 스키마를 삭제하고 엔티티 기준으로 새로 생성(기존 데이터 모두 삭제)
  • create-drop: create와 동일하게 시작 시 새로 생성하고 종료 시 스키마 삭제

'스터디 > JPA' 카테고리의 다른 글

JPA 스터디1 - 3  (0) 2025.07.01
JPA 스터디1 - 2  (3) 2025.06.16

+ Recent posts