BE전문가 프로젝트
1.2 Products Repository 설계 - Products(ProductRepository.interface) 본문
package com.bnc.main.product.domain;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
우리가 사용할 repositroty에 JPARepository를 확장시켜주어 JPARepository가 가지고 있는 메소드를 사용할 수 있도록 해준다.
entitymanager를 사용하는 방법도 있지만 실무에서는 사용하지 않는다고 한다.
기본으로 제공하는 메소드들을 사용하지만 따로 쿼리문을 작성해야 할 때는 @Query("쿼리문")을 사용하면 된다.
Test
package com.bnc.main.product.domain;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
class ProductRepositoryTest {
@Autowired
ProductRepository productRepository;
@Test
void 상품_생성_성공() {
Product product = new Product("옷", 123, "구찌");
product = productRepository.save(product);
Product foundProduct = productRepository.findById(product.getId()).orElseThrow();
assertThat(foundProduct).isEqualTo(product);
}
}
Annotation | |
@DataJpaTest | JPARepostitoty를 사용할 때 필요한 Annotation - Jpa는 트랜잭션을 사용해야만 사용할 수 있다. 하지만 DATApaTest안에는 @Transactional을 포함하고 있기 때문에 따로 작성하지 않아도 된다. |
'JPA' 카테고리의 다른 글
JPA 프로젝트 생성(HelloWolrd) 후 DB 설정 (0) | 2022.09.05 |
---|---|
JPA란? (0) | 2022.08.14 |
JPA 탄생배경 (0) | 2022.08.03 |
1.3 Products Service 설계 - Products(ProductService.interface) (0) | 2022.05.12 |
1.1 도메인 설계 - Products(Products.class) (0) | 2022.05.12 |
Comments