일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바의정석
- spring
- 스프링
- 정처기필기
- 정처기설명
- function
- 게시판만들기
- 이것이자바다
- CRUD
- 파이썬
- 자바
- 정처기공부
- 게시판
- java
- 정처기
- 정처기예상문제
- 소프트웨어설계
- 코딩테스트
- springboot
- CRUD구현
- 어노테이션
- PYTHON
- 프로그래머스
- 정보처리기사
- 스프링부트
- 파이선
- 게시판프로젝트
- 소프트웨어개발
- 자바의정석요약
- 정보처리기사필기
- Today
- Total
Helmi
Repository 설계하기 본문
ItemRepository 인터페이스 만들기
com.shop.repository 패키지에 ItemRepository 인터페이스 만들기
package com.shop.repository;
import com.shop.entity.Item;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ItemRepository extends JpaRepository<Item, Long>{
}
JpaRepository를 상속받음. 이는 2개의 제네릭 타입을 사용.
1) 엔티티 타입 클래스
2) 기본키 타입
JpaRepository는 기본적인 CRUD 및 페이징 처리위한 메소드 정의되어 있음.
메소드 | 기능 |
<S extends T> save(S entity) | 엔티티 저장 및 수정 |
void delete(T entity)0 | 엔티티 삭제 |
count() | 엔티티 총 개수 반환 |
Iterable<T> findAll() | 모든 엔티티 조회 |
테스트 파일 설정
로직이 복잡할 경우 코드 수정 후 버그없이 제대로 동작하는지 테스트하는 것이 매우 중요.
잘 만들어진 테스트 케이스는 유지보수 및 소스코드의 안정성을 위해 중요.
테스트 환경의 경우 h2 데이터베이스 사용하도록 resources 아래 application-test.properties 사용해줄 것.
(H2 데이터베이스 : 메모리에 데이터 저장하는 인메모리 데이터베이스 기능 제공. 애플리케이션 종료되면 데이터베이스에 저장된 데이터 삭제됨. 가볍고 빨라 개발할 때 테스트용 데이터베이스로 많이 사용함.)
# 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.datanase-platform=org.hibernate.dialect.H2Dialect
테스트 코드 작성
package com.shop.repository;
import com.shop.constant.ItemSellStatus;
import com.shop.entity.Item;
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;
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTests {
@Autowired
ItemRepository itemRepository;
@Test
@DisplayName("상품 저장 테스트")
public void createItemTests() {
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());
itemRepository.save(item);
System.err.println(savedItem.toString());
}
}
- ItemRepository 사용 위해 @Autowired 이용해 Bean 주입
- @Test : 테스트 할 메소드 위에 선언, 해당 메소드를 테스트 대상으로 지정
- Junit5에 추가된 어노테이션으로 테스트 코드 실행 시 @DisplayName에 지정한 테스트명 노출 됨.
Ctrl + Shift + F10 : 실행 단축기
ItemRepository 인터페이스를 작성한 것만으로 상품 테이블에 데이터 insert 가능.
(Spring DataJPA는 인터페이스 작성시 런타임 시점에 자바의 Dynamic Proxy 이용해 객체를 동적으로 생성해주므로)
'SpringBoot' 카테고리의 다른 글
쿼리 메소드 -2 (0) | 2023.03.17 |
---|---|
쿼리 메소드 - 1 (0) | 2023.03.14 |
Entity 매핑 관련 어노테이션 (0) | 2023.03.13 |
상품 엔티티 설계 (0) | 2023.03.13 |
쇼핑몰 프로젝트 생성 (0) | 2023.03.12 |