백엔드/Spring Boot

모던 웹 애플리케이션 개발 - 3. JPA를 이용한 데이터베이스 생성 및 접근 (2)

두개의 문 2023. 8. 22. 19:07

6. 스프링 데이터 리포지터리에 쿼리 정의 

  - 쿼리 접두사 ( 예 : findBy )로 시작하고, 그 다음 쿼리에 이용할 엔티티 클래스 필드가 나와야 함 

 

 

▪︎ CarRepository 인터페이스 생성

① 단일 조건으로 검색 

public interface CarRepository extends CrudRepository<Car, Long>{
	// * < 엔티티 클래스 이름, PK 데이터 타입 >
	//   단, PK 데이터 타입은 wrapper 클래스명으로 넘겨주어야 함 
	//   ( long이 아닌 Long ) 
	
	
	// * JPA에서는 일반적인 검색은 직접 구현하지 않음. 여기서는 선언만 함. 
	// * 스프링 데이터 리포지토리에 다음 쿼리 정의 
	// 1. 단일 조건으로 검색 
	// 브랜드로 자동차 검색 
	List<Car> findByBrand(String brand);
	
	// 색상으로 자동차 검색 
	List<Car> findByColor(String color);
	
	// 연도로 자동차 검색 
	List<Car> findByYear(int year);

 

 

② 복합 조건으로 검색 

	// 2. 복합 조건으로 검색 
	// * By 키워드 다음에 And 및 Or 키워드를 이용해 여러 필드 지정 가능
	// 브랜드와 모델로 자동차 검색 
	List<Car> findByBrandAndModel(String brand, String model);
	
	// 브랜드나 색상으로 자동차 검색 
	List<Car> findByBrandOrColor(String brand, String color);

 

 

③ 쿼리 정렬하여 검색 

	// 3. 쿼리 정렬하여 검색 
	// 브랜드로 자동차를 검색하고, 연도로 정렬 
	List<Car> findByBrandOrderByYearAsc(String brand);

 

 

④ @Query 애너테이션 이용 

 - JPA가 직접 SQL문을 생성하지 않고, 이 애너테이션으로 전달하는 SQL 사용 

 - SQL문 작성 규칙

   • from 뒤에는 Entity명 ( 소문자로 입력할 경우 에러 발생 ) 

   • 별칭 사용 ( as 없이 한칸 띄고 입력 )