[스프링부트JPA] 쇼핑몰 상품 레파지토리 설계

JEONG SUJIN·2023년 1월 23일
0
post-thumbnail

repository 패키지 생성 > ItemRepository 인터페이스 생성

import org.springframework.data.jpa.repository.JpaRepository;
import com.shopping.study.entity.Item;

public interface ItemRepository extends JpaRepository<Item, Long> {

}

JpaRepository를 상속받는 ItemRepository 만들어서 정의되어있는 문법을 입력한다.

2개의 제네릭 타입을 사용하는데, 첫번째 엔티티타입클래스,
기본키타입을 넣어주면 된다.

스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공한다.

테스트 셋팅하기

테스트는 작성한 코드가 예상한 결과가 맞는지 검사하는 로직

application-test.properties

# 테스트 설정
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create

src/test/java 폴더에 com.shopping.study.repository 패키지 만들고

ItemRepositoryTest.java

package com.shopping.study.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 org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;

import com.shopping.study.constant.ItemStatus;
import com.shopping.study.entity.Item;



@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTest {
	
	@Autowired
    ItemRepository itemRepository;
	@Test
    @DisplayName("상품 저장 테스트")
    public void createItemTest(){
        Item item = new Item();
        item.setItemNm("테스트 상품");
        item.setPrice(10000);
        item.setItemDetail("테스트 상품 상세 설명");
        item.setItemStatus(ItemStatus.SELL);
        item.setStockNumber(100);
        item.setRegTime(LocalDateTime.now());
        item.setUpdateTime(LocalDateTime.now());
        Item savedItem = itemRepository.save(item);
        System.out.println(savedItem.toString());
    }
}

콘솔창에 sql문이 제대로 나오는걸 볼 수 있다.
테스트가 성공적으로 된걸 볼 수 있다.

insert문을 사용하지 않았는데 인터페이스 작성만으로 상품 테이블에 데이터를 조회할 수 있다.

profile
기록하기

0개의 댓글