[SpringBoot 구조] Repository 설명 및 정의 / 어노테이션
2023. 12. 31. 11:05ㆍSpringBoot+JPA
반응형
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;
}
}
반응형
'SpringBoot+JPA' 카테고리의 다른 글
[SpringBoot 구조] Controller 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
---|---|
[SpringBoot 구조] Service 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
[SpringBoot 구조] DTO 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
[SpringBoot 구조] Entity 설명 및 정의 / 어노테이션 (0) | 2023.12.22 |
[SpringBoot 구조] - Entity / DTO / Repository / Service / Controller (0) | 2023.12.20 |