Spring Boot

[SPRING] 더미데이터를 만들어보장

재원쓰 2023. 1. 10. 15:09

더미데이터 추가하는 클래스 InitDb를 application이 있는 디렉토리 위치에 만든다.

 

뼈대를 그려보자.

InitDb 안에 static 클래스로 InitService를 만들고 그안에 데이터를 추가해주는 dbInit1 메서드를 만든다.

그리고 각각 빈으로 등록해준다.

@Component
public class InitDb {
    @Component
    static class InitService {
        public void dbInit1(){

        }
    }
}

 

더미 데이터를 짜고 EntityManager에 persist한다.

@Component
public class InitDb {
    @Component
    static class InitService {
    	@PersistenceContext
        EntityManager em;
        
        @Transactional
        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);
        }
    }
}

이제 애플리케이션 로딩 시점에 dbInit1을 실행시켜주는 코드를 추가한다.

@Component
@RequiredArgsConstructor // 👈추가
public class InitDb {
    private final InitService initService; // 👈추가

    @PostConstruct // 👈 아래 메서드 추가
    public void init(){
        initService.dbInit1();
    }
    
    @Component
    static class InitService {
    	@PersistenceContext
        private EntityManager em;
        @Transactional
        public void dbInit1(){
            ... 더미데이터 추가 코드 ...
        }
    }
}

이렇게 구축한 상태로 서버를 실행시킨 후 h2콘솔을 확인해본다.

잘 들어와 있는 것을 확인할 수 있다.