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 |