home/code/ stack/ spring/ spring-data-jpa/ JpaRepository

JpaRepository는 기본 CRUD 작업을 정의한 ListCrudRepository와 페이징 작업을 정의한 ListPagingAndSortingRepository를 확장한 spring data jpa 인터페이스로, 배치 작업과 지연 로딩 참조 메서드 등을 추가적으로 정의함

스프링 데이터 jpa에서 제공하는 기본 구현체는 SimpleJpaRepository인데 JpaRepository, 내부 설정을 위한 JpaRepositoryConfigurationAware 등을 확장한 JpaRepositoryImplementation 인터페이스를 구현함

즉, 스프링 데이터 jpa에서 기본 CRUD 작업이나 페이징/정렬 기능을 실질적으로 구현한 객체가 SimpleJpaRepository임

간단 상속 관계: SimpleJpaRepository(구현체) -> JpaRepositoryImplementation -> JpaRepository -> ListCrudRepository, ListPagingAndSortingRepository -> Repository

SimpleJpaRepository 생성 및 동작 과정

  1. 리포지토리 인터페이스 정의
public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByLastName(String lastName);
}
  1. 애플리케이션 컨텍스트 초기화 및 리포지토리 인터페이스 스캔 및 프록시 생성
  1. 리포지토리 인터페이스 구현체 생성
  1. 사용