BackEnd/Spring Boot

JPA 적응기_1

Raconer 2023. 5. 21. 17:30
728x90

개요

이 글은 JPA를 테스트 하기 위하여 E-commerce 컨셉으로진행하며 JPA(Java Persistence API)를 여러 상황에서 사용한 경험을 공유 할려고 합니다.

목표

  1. JPA
    • JPA를 Spring Boot에 적용 하며 가독성 높은 코드 구성
    • 엔티티 매핑
    • 조회와 검색
    • 트랜잭션 관리
    • 성능 최적화
  2. 데이터베이스 설계
    • 최대한 RDS에서 여러 상황이 나올수 있도록 구성
    • 테이블 구조, 관계 설정, 인덱싱 등을 포함

구성

GIT

현재 셋팅 중이니 추후 코드를 참고해 주시면 감사하겠습니다.

GITHUB : jpa-e-commerce

Mysql

sql문은 실시간으로 변경 될수 있으며 계속 해서 변경할 예정입니다.
최근 SQL 및 RDS구조는 ERD _CLOUD_ECOMMERCE 를 참고 해주시면 감사하겠습니다.

CREATE TABLE `products` (
    `Key`    INT    NOT NULL,
    `name`    VARCHAR(50)    NOT NULL,
    `price`    DECIMAL(10,2)    NOT NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

CREATE TABLE `categories` (
    `id`    INT    NOT NULL,
    `name`    VARCHAR(50)    NOT NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

CREATE TABLE `transit` (
    `id`    VARCHAR(100)    NOT NULL,
    `order_id`    INT    NOT NULL,
    `transit_date`    DATE    NOT NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

CREATE TABLE `orders` (
    `id`    INT    NOT NULL,
    `product_id`    INT    NOT NULL,
    `quantity`    INT    NOT NULL,
    `order_date`    DATE    NOT NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

CREATE TABLE `order_statuses` (
    `id`    INT    NOT NULL,
    `order_id`    INT    NOT NULL,
    `status`    VARCHAR(50)    NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

CREATE TABLE `transit_status` (
    `id`    INT    NOT NULL,
    `transit_id`    VARCHAR(100)    NOT NULL,
    `status`    VARCHAR(45)    NOT NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

CREATE TABLE `product_categories` (
    `category_id`    INT    NOT NULL,
    `product_id`    INT    NOT NULL,
    `reg_date`    DATE    NOT NULL,
    `mod_date`    DATE    NULL
);

ALTER TABLE `products` ADD CONSTRAINT `PK_PRODUCTS` PRIMARY KEY (
    `Key`
);

ALTER TABLE `categories` ADD CONSTRAINT `PK_CATEGORIES` PRIMARY KEY (
    `id`
);

ALTER TABLE `transit` ADD CONSTRAINT `PK_TRANSIT` PRIMARY KEY (
    `id`
);

ALTER TABLE `orders` ADD CONSTRAINT `PK_ORDERS` PRIMARY KEY (
    `id`
);

ALTER TABLE `order_statuses` ADD CONSTRAINT `PK_ORDER_STATUSES` PRIMARY KEY (
    `id`
);

ALTER TABLE `transit_status` ADD CONSTRAINT `PK_TRANSIT_STATUS` PRIMARY KEY (
    `id`
);
728x90

'BackEnd > Spring Boot' 카테고리의 다른 글

JPA GenerationType 속성  (0) 2023.06.09
JPA의 ddl-auto 속성과 그 특징  (0) 2023.06.09
JPA란?  (0) 2023.05.21
영속성 이란?  (0) 2023.05.21
JPA Entity 작성_1 (공통, 같은 테이블)  (0) 2023.05.15