반응형
스프링 데이터 JPA가 제공하는 쿼리 메소드 기능 중 메소드 이름으로 쿼리 생성에 대해 알아보자.
스프링 데이터 JPA가 제공하는 쿼리 메소드 기능
- 메소드 이름으로 쿼리 생성
- 메소드 이름으로 JPA NamedQuery 호출
- @Query 어노테이션을 이용한 쿼리 직접 정의
메소드 이름으로 쿼리 생성이란?
메소드 이름을 분석해서 JPQL 쿼리 실행하는 것
JPA vs. Spring Data JPA 비교
순수 JPA
public List<Member> findByUsernameAndAgeGreaterThan(String username, int age) {
return em.createQuery("select m from Member m where m.username = :username and m.age > :age")
.setParameter("username", username)
.setParameter("age", age)
.getResultList();
}
스프링 데이터 JPA
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}
스프링 데이터 JPA는 알아서 메소드 이름을 분석해서 JPQL을 생성하고 실행해주므로 다음과 같이 간결하게 코드를 줄일 수 있다.
대신 필터 조건에 부합하지 않는 키워드는 사용할 수 없으니 주의해야 한다.
쿼리 메소드 필터 조건
더 자세한 내용은 스프링 데이터 JPA 공식 문서 참고하자.
참조 - 자바 ORM 표준 JPA 프로그래밍
반응형
'웹개발 > Spring' 카테고리의 다른 글
OSIV란? (0) | 2020.01.20 |
---|---|
[JPA] 연관관계 매핑 (0) | 2020.01.20 |
[JPA] 양방향 연관관계 (0) | 2020.01.19 |
[JPA] 엔티티 매핑 ⭐️ @Entity, @Table, @Column, @Id (0) | 2020.01.17 |
[JPA] 플러시란? Flush (0) | 2020.01.17 |