Spring Data JPA = JPA + Repository 추상화 + 자동 쿼리 생성 + 페이징/정렬 지원

Spring 프레임워크에서 JPA를 편리하게 사용할 수 있도록 제공하는 Spring Data 모듈 중 하나이다.
EntityManager 를 이용해 persist(), find(), createQuery() 같은 걸 직접 호출해야 해서 코드가 복잡해짐
JPA를 추상화시킨 Repository라는 인터페이스를 사용하고 쿼리메소드(Query Method)를 호출하 는 것만으로 손쉽게 SQL문을 생성할 수 있다.
일반적으로 상속을 다 받은 JpaRepository인터페이스를 상속받아 사용한다.


Querydsl 쿼리 지원(동적 쿼리)
pagination을 지원한다. → 게시판에서 내용을 구분해서 볼 수 있게 해준다.
pageable

Repository 추상화

JpaRepository<T, ID> 인터페이스를 상속받으면 기본적인 CRUD 메서드(save, findAll, deleteById 등)를 구현하지 않아도 됨.public interface UserRepository extends JpaRepository<User, Integer> {
}
→ 이렇게만 선언하면 Spring Data JPA가 자동으로 구현체를 만들어 Bean으로 등록
쿼리 메서드(Query Method)
List<User> findByName(String name);
List<User> findByAgeGreaterThan(int age);
→ SQL을 안 써도 메서드로 JPQL을 만들어줌
JPQL / @Query 지원
@Query 어노테이션으로 직접 작성 가능@Query("SELECT u FROM User u WHERE u.status = :status")
List<User> findByStatus(@Param("status") String status);
Querydsl 통합 가능
페이징 & 정렬 지원
Pageable, Sort 객체를 파라미터로 받아 자동으로 페이징 처리Page<User> findByAge(int age, Pageable pageable);
일반적으로 상속을 다 받은 JpaRepository인터페이스를 상속받아 사용한다
Repository 인터페이스의 메소드

쿼리 메소드(Query Methods)


