728x90
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을 생성하고 실행해주므로 다음과 같이 간결하게 코드를 줄일 수 있다.
- 대신 필터 조건에 부합하지 않는 키워드는 사용할 수 없으니 주의해야 한다.
- 위의 표를 참고하여 쿼리를 생성한다.
참고 : JAVA 표준 ORM JPA 프로그래밍 (저자 김영한)
참고2 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation
728x90
'JPA' 카테고리의 다른 글
@CreatedBy, @ModifiedBy 사용하기 (0) | 2022.06.21 |
---|---|
@Converter (부제 - 데이터 변환) (0) | 2022.06.21 |
벌크 연산(부제 - DB에 직접 쿼리) (0) | 2022.06.18 |
컬렉션 엔티티 조회 + 페이징을 함께 해결 (feat. default_batch_fetch_size) (0) | 2022.06.16 |
QueryDSL(Criteria 보다 더 나은 JPQL 빌더) (0) | 2022.06.16 |