Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Greedy
- Thymeleaf
- 스프링 핵심 원리
- 인프런
- AOP
- 스프링
- jpa
- Android
- spring
- 자바
- java
- transaction
- pointcut
- Proxy
- 김영한
- Exception
- 그리디
- springdatajpa
- SpringBoot
- 스프링 핵심 기능
- 알고리즘
- Spring Boot
- 백준
- db
- QueryDSL
- JPQL
- Servlet
- kotlin
- JDBC
- http
Archives
- Today
- Total
개발자되기 프로젝트
API 개발 고급 소개 1 본문
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;
}
}
}
'인프런 > [인프런] Springboot와 JPA활용 2' 카테고리의 다른 글
지연 로딩과 조회 성능 최적화(JPA에서 DTO 바로 조회) (0) | 2021.08.23 |
---|---|
지연 로딩과 조회 성능 최적화(FETCH JOIN) (0) | 2021.08.22 |
지연로딩과 성능최적화(DTO, N+1) (0) | 2021.08.22 |
지연로딩과 조회성능 최적화(엔티티 노출) (0) | 2021.08.22 |
회원 등록, 수정, 조회 API (0) | 2021.08.21 |
Comments