Section 1. 상품 Repository 설계
1. Spring Data JPA
- Spring Data JPA 개념(링크달기)
2. 상품 Repository 생성
- com.shop.repository.ItemRepository.java 생성
- DAO 역할을 수행하는 Repository 인터페이스
- JpaRepository 클래스 extends <Entity 타입, 주키 타입>
package com.shop.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.shop.entity.Item;
public interface ItemRepository extends JpaRepository<Item, Long> {
}
3. application-test.properties 생성
- h2.db 사용 -> 인메모리 db 기능, Application 종료 후 저장된 데이터 삭제, 빠르고 가벼움
# Datasource 설정
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.username=sa
spring.datasource.password=
# H2 데이터베이스 방언 설정
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create
4. 상품 Repository 테스트
shop/src/test/java/com/shop/repository/ItemRepositoryTest.java 생성
- 상품 저장 테스트 수행
package com.shop.repository;
import java.time.LocalDateTime;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.shop.constant.ItemSellStatus;
import com.shop.entity.Item;
public class ItemRepositoryTest {
@Autowired
ItemRepository itemRepository;
@Test
@DisplayName("상품 저장 테스트")
public void createItemTest() {
Item item = new Item();
item.setItemNm("테스트 상품");
item.setPrice(10000);
item.setItemDetail("테스트 상품 상세 설명");
item.setItemSellStatus(ItemSellStatus.SELL);
item.setStockNumber(100);
item.setRegTime(LocalDateTime.now());
item.setUpdateTime(LocalDateTime.now());
Item savedItem = itemRepository.save(item);
System.out.println(savedItem.toString());
}
}
// 실제 Application 을 구동할 때 처럼 모든 Bean을 IOC 컨테이너에 생성
@SpringBootTest
// 테스트 코드 실행 시 application.properties 와 겹치는 부분은 우선순위를 갖도록 함
@TestPropertySource(locations = "classpath:application-test.properties")
// 테스트 코드 실행 시 테스트명이 노출
@DisplayName("상품 저장 테스트")
'JAVA > SpringBoot Shoppingmall' 카테고리의 다른 글
[VSCODE] SpringBoot 쇼핑몰(MVN) @Query 어노테이션 (0) | 2022.06.22 |
---|---|
[VSCODE] SpringBoot 쇼핑몰(MVN) 쿼리 메서드 (Query Method) (0) | 2022.06.22 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 상품 Entity 설계 (0) | 2022.06.22 |
[VSCODE] JPA 개념 및 원리 (0) | 2022.06.21 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 개발 환경 설정 (0) | 2022.06.21 |