JpaRepository
- Spring Data JPA 에서 제공하는 기본 인터페이스
- CRUD와 페이징, 정렬을 포함한 다양한 데이터 엑세스 메서드를 제공
1. CRUD 메서드
- save(S entity): S
- 새로운 엔터티를 저장하거나, 기존 엔터티를 업데이트
- findById(ID id)
- 주어진 ID에 해당하는 엔터티를 조회
- existsById(ID id): boolean
- 주어진 ID가 존재하는지 확인
- findAll()
- 데이터베이스에 있는 모든 엔터티를 조회
- deleteById(ID id): void
- 주어진 ID의 엔터티를 삭제
2. JpaRepository<타입1, 타입2>의 구조
- 타입1
- 엔터티(entity) 클래스 타입
- DB 테이블과 매핑되는 클래스
- 타입2
- 엔터티의 ID 타입
- 해당 엔터티의 기본 키 필드에 사용된 데이터 타입
3. 쿼리 메서드 사용
- 사용자 정의 메서드
- 메서드 이름으로 쿼리 생성
- 메서드 이름을 분석해 자동으로 쿼리 생성
- 주로 WHERE, LIKE, BETWEEN, ORDER BY를 지원
-
더보기EX1) '가격'이 특정 금액 '이상'인 '상품' '조회'
findByPriceGreaterThan(int price);
- GreaterThan (이상)
EX2) '이름'에 특정 문자열이 '포함'된 '상품' '조회'
findByNameContaining(String keyword);
- Containing (포함)
EX3) '카테고리'가 일치하고 '가격'이 '특정 범위'에 있는 상품 조회
findByCategoryAndPriceBetween(String category, int minPrice, int maxPrice);
EX4) '특정 날짜' 이후에 생성된 '상품' '조회'
findByCreatedDateAfterOrderByCreatedDateDesc(LocalDate date);
- After (이후)
- OrderByA (A를 기준으로 정렬)
- Desc (내림차순)
- @Query 어노테이션을 사용해 직접 SQL 생성
-
더보기findByPriceGreateThan(1000)
: SELECT * FROM product WHERE price > 1000;
@Query("SELECT * FROM Product p WHERE p.price > :price")
반환타입 findProductsByPrice(@Param("price") int price);
findByNameContaining("Phone")
findByCategoryAndPriceBetween("Electronics", 500, 1500)
findByCreatedDataAfterOrderByCreatedDateDesc(LocalDate.of(2023, 1, 1));
-
'SpringBoot' 카테고리의 다른 글
[SpringBoot] Status Codes (0) | 2024.10.18 |
---|---|
[SpringBoot] @RequestParam VS @RequestBody (0) | 2024.10.17 |
[SpringBoot] ORM, JPA (0) | 2024.10.16 |
[SpringBoot] 테스트 코드 (0) | 2024.10.16 |
[SpringBoot] DispatchServlet (0) | 2024.10.14 |