더북(TheBook)

리포지토리 인터페이스 선언

다음으로 데이터베이스에 Book 객체를 영속화할 수 있는 리포지토리를 선언한다. 스프링 데이터 JPA를 사용하므로 간단히 스프링 데이터 JPA의 JpaRepository 인터페이스를 상속하여 인터페이스를 만들면 된다.


package readinglist;
 
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
 
public interface ReadingListRepository extends JpaRepository<Book, Long> {
    List<Book> findByReader(String reader);
}

ReadingListRepositoryJpaRepository를 확장하여 공통된 영속성 연산을 수행하는 메서드 18개를 상속받는다. JpaRepository 인터페이스는 타입 매개변수 두 개를 받는다. 그중 첫 번째는 리포지토리가 사용할 도메인 타입이고, 두 번째는 클래스의 ID 프로퍼티 타입이다. 지정한 독자의 이름으로 독서 목록을 검색하는 findByReader() 메서드를 추가했다.

혹시 ReadingListRepository와 상속받은 메서드 18개를 누가 구현하는지 염려가 된다면 크게 걱정하지 말자. 스프링 데이터는 리포지토리를 인터페이스로 정의만 해도 잘 작동할 수 있게 특별한 마법을 제공한다. 인터페이스는 런타임(구체적으로는 애플리케이션이 시작할 때)에 자동으로 구현된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.