Notice
Recent Posts
Recent Comments
Link
YTCW
JpaRepository 본문
JpaRepository
- Spring Data JPA에서 제공하는 기본 인터페이스이다
- CRUD와 페이지, 정렬을 포함한 다양한 데이터 액세스 메서드를 제공한다.
CRUD 메서드
- save(S entity): S
- 새로운 엔터티를 저장하거나, 기존 엔터티를 업데이트한다. (저장하는 역할 및 업데이트)
- findById(ID id)
- 주어진 ID에 해당하는 엔터티를 조회
- existsById(ID id): boolean
- 주어진 ID가 존재하는지 확인
- 있는지 확인하고 2)으로 가져오기
- findAll()
- 데이터베이스에 있는 모든 엔터티를 조회
- deleteById(ID id): void
- 주어진 ID를 엔터티에서 삭제함
JpaRepository<타입1, 타입2>의 구조
- 모든 기준은 ID이다.
- 타입1
- 엔터티 클래스 타입
- DB 테이블과 매핑되는 클래스
- 타입2
- 엔터티의 ID 타입
- 해당 엔터티의 기본 키 필드에 사용된 데이터 타입
쿼리 메서드 사용
- ID는 모든 테이블에서 기본 키로 사용하기 때문에 조회할 때 사용한다.
- 사용방법: 사용자 정의 메서드
- @Query 어노테이션을 사용해 직접 SQL 작성한다
- 주로 WHERE, LIKE, BETWEEN, ORDER BY를 지원한다
findById(ID id);
- find: 조회 = select
- By (키워드): By 뒤의 키워드를 조건으로 조회
- ID: ID로 조회
예제 1) 가격이 특정 금액 이상인 상품 조회
- 필요한 것 생각하기: 가격, 이상, 상품, 조회
findByPriceGreaterThan(int price);
- GreaterThan (이상이라는 뜻)
예제 2) 특정 이름이 포함된 상품을 조회하려고 한다.
- 필요한 것 생각하기: 이름, 상품, 조회, 포함
findByNameContaining(String keyword);
- Containing (포함이라는 뜻)
예제 3) 카테고리가 일치하고 가격이 특정 범위에 있는 상품을 조회하려고 한다.
- 필요한 것 생각하기: 카테고리, 가격, 특정 범위, 상품
findByCategoryAndPriceBetween(String category, int minPrice, int maxPrice);
예제 4) '특정 날짜' 이후에 생성된 '상품' 조회
findByCreatedDateAfterOrderByCreatedDateDesc(LocalDate date);
- After (이후)
- OrderByA (A를 기준으로 정렬)
- Desc (내림차순)
- @Query 어노테이션을 사용해 직접 SQL 작성
- findByPriceGreaterThan(1000)
SELECT * FROM product WHERE price > 1000;
@Query("SELECT p FROM Product p WHERE p.price > :price")
반환타입 findProductsByPrice(@Param("price") int price);
- findByNameContaining("Phone")
- findByCategoryAndPriceBetween("Electronics", 500, 1500)
- findByCreatedDateAfterOrderByCreatedDateDesc(LocalDate.of(2023, 1, 1))