공통 인터페이스 기능
공통 인터페이스 설정
JavaConfig 설정
스프링 부트 사용시 생략 가능
@Configuration
@EnableJpaRepositories(basePackages = "jpabook.jpashop.repository")
public class AppConfig {}
스프링 부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식)
스프링 데이터 JPA가 구현 클래스를 생성
1. 개발자: Interface extends JpaRepository<T, ID> 정의 *T: 엔티티 타입 ID: 식별자 타입(PK)
2. 애플리케이션 로딩 시점에 구현 클래스를 대신 생성
- 실제로 리포지토리 객체를 getClass()로 출력해보면 프록시 객체로 나옴
- @Repository 애노테이션 생략 가능
컴포넌트 스캔 X, 스프링이 동적으로 구현 클래스를 생성하여 의존성 주입
JPA 예외를 스프링 예외로 변환하는 과정도 자동으로 처리
- 구현체의 메서드가 내부적으로 동작하는 방식도 순수 jpa만 사용한 기존 코드와 유사하다.