Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- python
- 플러터
- 데이터
- DB
- 네트워크
- 리눅스
- CS지식
- Flutter
- 백준
- springboot
- 자료구조
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- CS
- Spring Security
- 자바스크립트
- JPA
- Java
- spring
- 프로그래머스
- 시큐리티
- postgresql
- 파이썬
- 데이터베이스
- baekjoon
- backjoon
- Oracle
- 스프링부트
- 자바
- 스프링
- programmers
Archives
- Today
- Total
Jin's Dev Story
[스프링 부트 쇼핑몰 프로젝트 with JPA] 1-1. 상품 Entity 설계 본문
Web & Android/스프링 부트 쇼핑몰 프로젝트 with JPA
[스프링 부트 쇼핑몰 프로젝트 with JPA] 1-1. 상품 Entity 설계
woojin._. 2023. 10. 15. 09:53이 내용은 스프링 부트 쇼핑몰 프로젝트 with JPA 책을 학습한 내용입니다.
1. 상품 판매 상태 enum 설계
- enum 클래스에 대한 개념
- kr.spring.item.constant.item.java 생성
- 상품의 현재 판매 상태 (판매, 품절)를 나타내는 상수값 (SELL, SOLD_OUT)
package kr.spring.item.constant;
// 상품의 현재 판매 상태를 나타내는 상수값
public enum ItemSellStatus {
SELL, SOLD_OUT
}
2. 상품 클래스 생성
- kr.spring.item.entity.java 생성
- 상품 판매 상태의 값은 ItemSellStatus 열거형의 값을 가짐
package kr.spring.item.entity;
// 아이템 엔티티
import jakarta.persistence.*;
import kr.spring.exception.OutOfStockException;
import kr.spring.item.constant.ItemSellStatus;
import kr.spring.item.dto.ItemFormDto;
import kr.spring.utils.entity.BaseEntity;
import lombok.*;
@Entity
@Table(name = "my_item") // 테이블 명칭 지정
@Getter
@Setter // 필수 아님
@ToString // 문자열 자동 생성
@NoArgsConstructor // 빈생성자 생성
@AllArgsConstructor //모든 entity에 대해서 생성자를 만든다.
public class Item {
@Id //기본키 설정
@GeneratedValue(strategy = GenerationType.IDENTITY) //mysql의 경우 identity를 사용.
@Column(name = "item_id") //name 속성은 column의 이름을 변경할 수 있다.
private Long id; // 상품 코드
// null을 허용하지 않음.
@Column(nullable = false, length = 50)
private String itemNm; // 상품 이름
@Column(nullable = false)
private int price; // 상품 가격
@Column(nullable = false, name="number")
private int stockNumber; // 재고 수량
// 열거형은 기본적으로 숫자로 다루는 것이 원칙. 해당 어노테이션은 열거형을 나타내는 어노테이션
// ORDINAL = 숫자로 다룬다. STRING = 문자로 다룬다.
@Enumerated(EnumType.STRING)
private ItemSellStatus itemSellStatus;
@Lob // 큰 데이터를 저장하는데 사용하는 데이터형(동영상, 이미지 등)
@Column(nullable = false)
private String itemDetail; // 상품 상세 설명
private LocalDateTime regTime; // 등록 시간
private LocalDateTime updateTime; // 수정 시간
}
3. 상품 테이블 생성
- Web Application 실행 시 @Entity 지정된 클래스를 기반으로 테이블 매핑
- spring.jpa.hibernate.ddl-auto=create 설정으로 인해서 테이블 drop 후 create
- spring.jpa.hibernate.ddl-auto=update 설정인 경우엔 테이블 update
MySQL-WorkBench or DBeaver 에서 초기에 환경설정한 데이터베이스명으로 생성된 테이블 확인
'Web & Android > 스프링 부트 쇼핑몰 프로젝트 with JPA' 카테고리의 다른 글
[스프링 부트 쇼핑몰 프로젝트 with JPA] 3. 로그인/로그아웃 (0) | 2023.10.15 |
---|---|
[스프링 부트 쇼핑몰 프로젝트 with JPA] 2-3. 회원가입 검증 (0) | 2023.10.15 |
[스프링 부트 쇼핑몰 프로젝트 with JPA] 2-2. 회원가입 페이지 (0) | 2023.10.15 |
[스프링 부트 쇼핑몰 프로젝트 with JPA] 2-1. 회원가입 로직 (0) | 2023.10.15 |
[스프링 부트 쇼핑몰 프로젝트 with JPA] 1-2. 상품 Repository 설계 (0) | 2023.10.15 |