Spring Data JPA를 사용하면 데이터 접근 코드를 간소화하고 개발 생산성을 향상시킬 수 있습다.
JPQL (Java Persistence Query Language)는 엔터티 객체를 중심으로 데이터를 쿼리하기 위한 언어입니다.
동적 쿼리
Spring Data JPA는 메소드 이름을 기반으로 쿼리를 생성하는 기능을 제공합니다.
이때 사용되는 메서드 이름의 주제 키워드를 이용하면 쿼리를 자동으로 생성할 수 있습니다.
쿼리 메서드의 생성
쿼리 메서드는 크게 동작을 결정하는 주제와 서술어로 구분하며 키워드로 쿼리의 주제를 정하먀
By는 서술어의 시작을 나타내는 구분자 역할을 합니다.
// (리턴타입) + (주제 + 서술어(속성)) 구조의 메서드
List<User> findByName(String name);
쿼리 메서드의 사용
조회 (Querying)
- find…By, read…By, get…By: 기본적인 조회를 위한 키워드
- findFirstBy, findTopBy: 결과의 첫 번째 항목만 조회
- countBy: 결과의 수를 반환합니다.
조건 키워드 (Clauses)
- And: 여러 필드를 논리적 'AND' 조건으로 결합합니다.
- Or: 여러 필드를 논리적 'OR' 조건으로 결합합니다.
- Is, Equals: 필드의 값이 특정 값과 동일한지 검사합니다.
- Between: 필드의 값이 두 값 사이에 있는지 검사합니다.
- LessThan, GreaterThan: 필드의 값이 특정 값보다 작거나 큰지 검사합니다.
- IsNull, IsNotNull: 필드의 값이 NULL인지, NULL이 아닌지 검사합니다.
- Like, NotLike: 문자열 필드가 특정 패턴과 일치하는지 검사합니다.
- StartingWith, EndingWith: 문자열 필드가 특정 값으로 시작하거나 끝나는지 검사합니다.
- Containing: 문자열 필드에 특정 값이 포함되어 있는지 검사합니다.
- True, False: Boolean 필드의 값이 true 또는 false인지 검사합니다.
- Before, After: 날짜 필드의 값이 특정 날짜보다 이전이거나 이후인지 검사합니다.
- OrderBy: 결과를 특정 필드의 값에 따라 정렬합니다.
조인 (Joins)
- …By…Join: 연관된 엔터티와의 조인을 표현합니다.
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmail(String email);
List<User> findByNameAndAge(String name, Integer age);
List<User> findByNameOrEmail(String name, String email);
List<User> findByAgeBetween(Integer startAge, Integer endAge);
List<User> findByCreatedAtAfter(Date date);
List<User> findByNameLike(String pattern);
List<User> findByActiveTrue();
List<User> findByAgeGreaterThanAndActiveTrue(Integer age);
}
'BACKEND > SPRING' 카테고리의 다른 글
Spring Data JPA 활용 - @Query 어노테이션과 QueryDSL (0) | 2023.08.13 |
---|---|
Spring Data JPA 활용 - 정렬과 페이징 처리 (0) | 2023.08.13 |
데이터베이스 연동 - 레포지토리 인터페이스 설계와 DAO 연동을 위한 컨트롤러 설계 (0) | 2023.08.06 |
데이터 베이스 연동 - 엔티티 설계와 DAO 설계 (0) | 2023.08.06 |
데이터 베이스 연동 - ORM, JPA (0) | 2023.08.06 |