사랑하애오
article thumbnail

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("상품 저장 테스트")

profile

사랑하애오

@사랑하애

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!