본문 바로가기
백엔드/Spring(Boot)

스프링 초기화 샘플 데이터 입력

by 김어찐 2021. 10. 18.
728x90

트랜잭션 때문에 @PostConstruct에서 데이터 입력을 하지않고 따로 내부 클래스를 만들어서 데이터 입력해준다.

package jpabook.jpashop;

import jpabook.jpashop.domain.*;
import jpabook.jpashop.domain.item.Book;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;

@Component
@RequiredArgsConstructor
public class InitDb {

    private final InitService initService;
    
    @PostConstruct
    public void init() {
        initService.dbInit1();
    }
    
    @Component
    @Transactional
    @RequiredArgsConstructor
    static class InitService{
        private final EntityManager em;
        public void dbInit1() {
            Member member = new Member();
            member.setName("userA");
            member.setAddress(new Address("서울", "1", "1111"));
            em.persist(member);


            Book book1 = new Book();
            book1.setName("JPA1 BOOK");
            book1.setPrice(10000);
            book1.setStockQuantity(100);
            em.persist(book1);

            Book book2 = new Book();
            book2.setName("JPA2 BOOK");
            book2.setPrice(20000);
            book2.setStockQuantity(100);
            em.persist(book2);
            OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1);
            OrderItem orderItem2 = OrderItem.createOrderItem(book2, 20000, 2);

            Delivery delivery = new Delivery();
            delivery.setAddress(member.getAddress());
            Order order = Order.createOrder(member, delivery, orderItem1, orderItem2);
            em.persist(order);
        }
    }
}
728x90

'백엔드 > Spring(Boot)' 카테고리의 다른 글

스프링 AOP 순서 설정  (0) 2021.11.03
스프링 Swagger 설치  (0) 2021.10.29
스프링 API 리스트 전송 방법  (0) 2021.10.18
스프링 파일 업로드  (0) 2021.10.15
스프링 파일 업로드  (0) 2021.10.05