Skip to content

실전 : Section 4‐6

영주 edited this page May 25, 2024 · 3 revisions

Section 4

실습 코드 : 깃허브 코드 참고

  • @PersistenceContext : 엔티티 매니저( EntityManager ) 주입
  • @PersistenceUnit : 엔티티 매니저 팩토리( EntityManagerFactory ) 주입
  • sql은 테이블을 대상, jpql은 엔티티를 대상으로 쿼리 짬

트러블 슈팅

  • @RunWith(SpringRunner.class) : 스프링과 테스트 통합
    • JUnit4에서만 존재함
      ⇒ JUnit5에서는 @ExtendWith(SpringExtension.class으로 바꿔줘야 함
  • @SpringBootTest : 스프링 부트 띄우고 테스트

Section 5

실습 코드 : 깃허브 코드 참고


Section 6

실습 코드 : 깃허브 코드 참고

트러블 슈팅

  • assertEquals("상품 주문시 상태는 ORDER", OrderStatus.*ORDER*, getOrder.getStatus());
    JUnit5에서는 오류가 나서
    *assertThat*(OrderStatus.*ORDER*).as("상품 주문시 상태는 ORDER").isEqualTo(getOrder.getStatus());
    이렇게 고쳤음

  • @Test(expected = NotEnoughStockException.class)
    JUnit5에서는 지원을 안 함
    *assertThrows*(NotEnoughStockException.class, () -> {orderService.order(member.getId(), item.getId(), orderCount);});

  • 쿼리 생성할 때

    • List<Order> resultList = em.createQuery("select o from Order o join o.member m" + " where o.status = :status" + " and m.name like :name", Order.class).getResultList();
    • “ 뒤에 띄어쓰기 주의!!

동적 쿼리 작성

  • JPQL로 처리
  • JPA Criteria로 처리
  • Querydsl 사용

동적 쿼리 작성할 때는 queryDsl 쓰는 게 좋음 (강의에서는 자세하게 안 알랴주심)