BE전문가 프로젝트

1.2 Products Repository 설계 - Products(ProductRepository.interface) 본문

JPA

1.2 Products Repository 설계 - Products(ProductRepository.interface)

원호보고서 2022. 5. 12. 13:27
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