순수 JPA로 구현한 MemberJpaRepository 대신에 스프링 데이터 JPA가 제공하는 공통 인터페이스 어떻게 설정하는지 알아보겠습니다.
@Configuration
@EnableJpaRepositories(basePackages = "jpabook.jpashop.repository")
public class AppConfig {}
원래대로라면 @EnableJpaRepositories 를 사용해서 사용할 패키지 경로를 잡아줘야 합니다.
하지만 스프링 부트 사용시 @SpringBootApplication 가 있는 패치키 위치를 지정합니다.
package study.datajpa;
@SpringBootApplication
public class DataJpaApplication {}
즉, study.datajpa 해당 패키지와 하위 패키지를 인식해서 스프링 데이터 JPA 를 자동으로 끌어올 수 있습니다.
그래서 요즘에는 세팅을 안해도 됩니다.
만약 위치가 달라지면 @EnableJpaRepositories 가 필요하지만 패키지 구조를 보면 결국 study.datajpa 밑에 모든 패키지들이 있기 때문에 어떤 위치에 있더라도 상관 없습니다.
이전에 만들었던 스프링 데이터 JPA 리포지토리를 봅시다.
package study.datajpa.repository;
public interface MemberRepository extends JpaRepository<Member, Long> {
}
MemberRepository 는 인터페이스고 구현체가 없습니다.
MemberJpaRepository 를 보면 구현체를 직접 만들었잖아요? 그런데 MemberRepository 는 인터페이스만 있는겁니다.