순수 JPA로 구현한 MemberJpaRepository 대신에 스프링 데이터 JPA가 제공하는 공통 인터페이스 어떻게 설정하는지 알아보겠습니다.

JavaConfig 설정- 스프링 부트 사용시 생략 가능

@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가 구현 클래스 대신 생성

이전에 만들었던 스프링 데이터 JPA 리포지토리를 봅시다.

package study.datajpa.repository;

public interface MemberRepository extends JpaRepository<Member, Long> {
}

MemberRepository 는 인터페이스고 구현체가 없습니다.

MemberJpaRepository 를 보면 구현체를 직접 만들었잖아요? 그런데 MemberRepository 는 인터페이스만 있는겁니다.