y-seo
y-seo의 딩코 기록들
y-seo
  • 분류 전체보기 (174)
    • Computer Science (49)
      • Database Design & Query Lan.. (10)
      • Network Security (16)
      • Software Engineering (6)
      • Computer Network (17)
    • Spring (50)
      • Spring-Basic (11)
      • SpringBoot-AWS (7)
      • SpringBoot&JPA (22)
      • 토비의 스프링 (3)
      • + α (7)
    • Cloud (22)
      • AWS (4)
      • GCP (1)
      • ElasticSearch (17)
    • Test (3)
    • Project (4)
    • Algorithm (24)
      • 개념 (9)
      • 문제풀이 (15)
    • AI (3)
      • About (2)
      • AIDU ez (1)
    • Error (4)
    • ETC (1)
    • Review (8)
    • IT (5)
      • SQLD (4)
      • ADsP (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

태그

  • Python
  • 인프런
  • 컴퓨터 네트워킹 하향식 접근
  • java
  • Spring
  • 알기 쉬운 정보보호개론 3판
  • 백준
  • 자바
  • 파이썬
  • algorithm
  • 보안
  • 스프링
  • springboot
  • 알고리즘
  • 네트워크보안
  • 스프링부트
  • JPA
  • baekjoon
  • 김영한
  • 네트워크

티스토리

hELLO · Designed By 정상우.
y-seo

y-seo의 딩코 기록들

Spring/SpringBoot&JPA

[스프링부트와 JPA 활용 2] Section2. API 개발 고급 - 준비

2023. 11. 27. 03:30

API 개발 고급 소개

  1. 조회용 샘플 데이터 입력
  2. 지연 로딩과 조회 성능 최적화
  3. 컬렉션 조회 최적화
  4. 페이징과 한계 돌파
  5. OSIV와 성능 최적화

 

조회용 샘플 데이터 입력

  • userA
    • JPA1 BOOK
    • JPA2 BOOK
  • userB
    • SPRING1 BOOK
    • SPRING2 BOOK
  • 두 건의 주문이 접수된 것이다.
  • jpashop/src/main/java/jpabook/jpashop/InitDb.java 추가
package jpabook.jpashop;

import jakarta.annotation.PostConstruct;
import jakarta.persistence.EntityManager;
import jpabook.jpashop.domain.*;
import jpabook.jpashop.domain.item.Book;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
@RequiredArgsConstructor
public class InitDb {
    private final InitService initService;
    @PostConstruct
    public void init() {
        initService.dbInit1();
        initService.dbInit2();
    }
    @Component
    @Transactional
    @RequiredArgsConstructor
    static class InitService {
        private final EntityManager em;
        public void dbInit1() {
            Member member = createMember("userA", "서울", "1", "1111");
            em.persist(member);
            Book book1 = createBook("JPA1 BOOK", 10000, 100);
            em.persist(book1);
            Book book2 = createBook("JPA2 BOOK", 20000, 100);
            em.persist(book2);
            OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1);
            OrderItem orderItem2 = OrderItem.createOrderItem(book2, 20000, 2);
            Order order = Order.createOrder(member, createDelivery(member),
                    orderItem1, orderItem2);
            em.persist(order);
        }
        public void dbInit2() {
            Member member = createMember("userB", "진주", "2", "2222");
            em.persist(member);
            Book book1 = createBook("SPRING1 BOOK", 20000, 200);
            em.persist(book1);
            Book book2 = createBook("SPRING2 BOOK", 40000, 300);
            em.persist(book2);
            Delivery delivery = createDelivery(member);
            OrderItem orderItem1 = OrderItem.createOrderItem(book1, 20000, 3);
            OrderItem orderItem2 = OrderItem.createOrderItem(book2, 40000, 4);
            Order order = Order.createOrder(member, delivery, orderItem1,
                    orderItem2);
            em.persist(order);
        }
        private Member createMember(String name, String city, String street,
                                    String zipcode) {
            Member member = new Member();
            member.setName(name);
            member.setAddress(new Address(city, street, zipcode));
            return member;
        }
        private Book createBook(String name, int price, int stockQuantity) {
            Book book = new Book();
            book.setName(name);
            book.setPrice(price);
            book.setStockQuantity(stockQuantity);
            return book;
        }
        private Delivery createDelivery(Member member) {
            Delivery delivery = new Delivery();
            delivery.setAddress(member.getAddress());
            return delivery;
        }
    }
}
저작자표시

'Spring > SpringBoot&JPA' 카테고리의 다른 글

[자바 ORM 표준 JPA 프로그래밍] 섹션2. JPA 시작하기  (0) 2024.03.15
[자바 ORM 표준 JPA 프로그래밍] 섹션1. JPA 소개  (0) 2024.03.15
[스프링부트와 JPA 활용 2] Section1 중 "회원 삭제 API"  (0) 2023.11.22
[스프링부트와 JPA 활용 2] Section1. API 개발 기본  (1) 2023.11.22
[스프링부트와 JPA 활용 1] Section7. 웹 계층 개발  (0) 2023.11.14
    'Spring/SpringBoot&JPA' 카테고리의 다른 글
    • [자바 ORM 표준 JPA 프로그래밍] 섹션2. JPA 시작하기
    • [자바 ORM 표준 JPA 프로그래밍] 섹션1. JPA 소개
    • [스프링부트와 JPA 활용 2] Section1 중 "회원 삭제 API"
    • [스프링부트와 JPA 활용 2] Section1. API 개발 기본
    y-seo
    y-seo

    티스토리툴바