[SpringBoot 구조] Repository 설명 및 정의 / 어노테이션

2023. 12. 31. 11:05SpringBoot+JPA

반응형

 

 

 

[SpringBoot 구조] Entity 설명 및 정의 / 어노테이션

더보기 [목차] - Entity 정의 - Entity 구조 - Entity에 사용되는 어노테이션 종류 Entity 정의 자바 어플리케이션에서 관계형 데이터베이스의 데이터를 객체로 표현하는 데 사용 엔터티 객체를 통해 데

dalhyehye.tistory.com

 

[SpringBoot 구조] DTO 설명 및 정의 / 어노테이션

DTO 정의 클라이언트와 서버 간의 데이터 전송을 위해 사용되는 객체 데이터베이스에서 가져온 데이터나 서비스 간의 통신에 필요한 데이터를 담고 있는 객체 교환할 자료에 따라 여러 개로 구

dalhyehye.tistory.com

 

 

Repository 정의

데이터베이스와의 상호작용을 담당하는 인터페이스

인터페이스를 통해 데이터베이스에 접근

 

데이터베이스와의 연동이 간소화

 

 

 

JpaRepository

주요 Repository 인터페이스 중 하나

기본적인 CRUD(Create, Read, Update, Delete) 연산을 지원

이를 확장하여 복잡한 데이터베이스 연산을 정의

 

 

 

Repository 구조 및 작성 방법

JpaRepository를 상속받는 Repository 인터페이스를 정의

 

JPA는 Repository에 질의어를 작성하는 메소드가 필요
메소드의 이름을 이용해서 자동으로 질의어를 생성

find + 엔티티이름(생략가능) + By변수(필드) + 논리연산자 + 변수(필드)...
@Repository
public interface ProductRepository extends JpaRepository <ProductEntity, Integer> {

  //검색조건
  //카테고리 타입
  @Query("SELECT p FROM ProductEntity p WHERE p.categoryTypeRole = :categoryTypeRole")
  Page<ProductEntity> findAllByCategoryTypeRole(@Param("categoryTypeRole") CategoryTypeRole categoryTypeRole, Pageable pageable);

  //상품명
  @Query("SELECT p FROM ProductEntity p WHERE p.productName LIKE %:keyword%")
  Page<ProductEntity> findAllByProductName(@Param("keyword") String keyword, Pageable pageable);

}

 

 

 

 

Repository 사용

Service나 Controller에서 Repository를 주입받아 사용

@Service
@Transactional
@RequiredArgsConstructor
public class ProductService {

  private final ProductRepository productRepository;
  private final ModelMapper modelMapper = new ModelMapper();

  //Create 생성
  public ProductEntity insert(ProductDTO productDTO) throws Exception {

    ProductEntity productEntity = modelMapper.map(productDTO, ProductEntity.class);
    productRepository.save(productEntity);

    return productEntity;

  	}
    
  }

 

반응형