YTCW

JpaRepository 본문

카테고리 없음

JpaRepository

YTCW 2024. 10. 17. 10:45

JpaRepository

  • Spring Data JPA에서 제공하는 기본 인터페이스이다
  • CRUD와 페이지, 정렬을 포함한 다양한 데이터 액세스 메서드를 제공한다.

CRUD 메서드

  1. save(S entity): S
  • 새로운 엔터티를 저장하거나, 기존 엔터티를 업데이트한다. (저장하는 역할 및 업데이트)
  1. findById(ID id)
  • 주어진 ID에 해당하는 엔터티를 조회
  1. existsById(ID id): boolean
  • 주어진 ID가 존재하는지 확인
  • 있는지 확인하고 2)으로 가져오기
  1. findAll()
  • 데이터베이스에 있는 모든 엔터티를 조회
  1. deleteById(ID id): void
  • 주어진 ID를 엔터티에서 삭제함

JpaRepository<타입1, 타입2>의 구조

  • 모든 기준은 ID이다.
  1. 타입1
  • 엔터티 클래스 타입
  • DB 테이블과 매핑되는 클래스
  1. 타입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))