Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

API 개발 고급 소개 1 본문

인프런/[인프런] Springboot와 JPA활용 2

API 개발 고급 소개 1

Seung__ 2021. 8. 22. 22:33

1. 조회용 샘플 데이터 입력


매번 애플리케이션 실행할때 마다 별도로 데이터 입력하기 귀찮으니

 

매 실행시 자동으로 데이터가 DB에등록되도록 코드를 구성해보자.

  • InitDb클래스 생성
    • @Component 적용하여 컴포넌트 스캔의 대상으로 지정함
  • 내부 메서드 init() 작성 및 @PostConstruct로 지정하여 빈 생성 이후에 실행되도록 지정
  • 내부 클래스인 InitService를 만들어서 @Conponent, @Transctional적용
    • 실질적인 db에 접근하는 코드 모아놓음. 
@Component
@RequiredArgsConstructor
public class InitDb {

    private final InitService initService;

    @PostConstruct //스프링 빈 생성 후 실행됨.
    public void init(){
        initService.doInit();
        initService.doInit2();
    }


    @Component
    @Transactional
    @RequiredArgsConstructor
    static class InitService{


        private final EntityManager em;
        public void doInit(){
            Member member = createMember("userA", "서울","송파", "232");
            em.persist(member);


            Book book1 = createBook("JPA1 BOOK", 10000,100 );

            Book book2 = createBook("JPA2 BOOK", 20000,100);

            em.persist(book1);
            em.persist(book2);

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


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



        }



        public void doInit2(){
            Member member = createMember("userB", "부산", "강남남", "222");
            em.persist(member);


            Book book1 = createBook("spring1 BOOK", 20000, 200);
            em.persist(book1);

            Book book2 = createBook("spring2 BOOK", 40000, 300);
            em.persist(book2);

            OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 3);
            OrderItem orderItem2 = OrderItem.createOrderItem(book2, 20000, 4);

            Delivery delivery = createDelivery(member);
            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;
        }


    }

}

 

 

 

 

Comments