[스프링 활용2] 조회용 샘플 데이터

atdawn·2024년 7월 9일

SPRING BOOT+JPA

목록 보기
38/49

참고 : [실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화] - 김영한


  • application.yml의 ddl-auto 를 create로 다시 변경해주자. (테이블 드랍하고 다시 생성)

조회용 샘플 데이터 입력

@Component
@RequiredArgsConstructor
public class initDb {

    private final InitService initService;

    @PostConstruct
    public void init(){
        initService.dbInit1();
    }

    @Component
    @RequiredArgsConstructor
    @Transactional
    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.setStockQuantity(100);
            book1.setPrice(10000);
            em.persist(book1);

            Book book2=new Book();
            book2.setName("JPA2 BOOK");
            book2.setStockQuantity(100);
            book2.setPrice(20000);
            em.persist(book2);

            OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1);
            OrderItem orderItem2 = OrderItem.createOrderItem(book2, 10000, 2);

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




        }
    }
...
}
  • @Component: Spring의 컴포넌트 스캔 기능을 통해 빈으로 등록
  • @PostConstruct : 애노테이션이 붙은 메서드는 의존성 주입이 완료된 후 자동으로 실행

동작 과정

  • 애플리케이션이 시작될 때, initDb 클래스가 빈으로 등록되고, PostConstruct 애노테이션에 의해 init() 메서드가 호출.
  • init() 메서드는 InitService의 dbInit1() 메서드를 호출하여 샘플 데이터를 데이터베이스에 삽입.
  • dbInit1() 메서드는 엔티티들을 생성하고, 설정하고, 영속화.

데이터가 잘 들어간 것을 확인.

profile
복습 복습 복습

0개의 댓글