인터페이스와 JpaRepsoitory 인터페이스를 상속한다.
findByUsername, save, update 등과 같이 간단하지만 단순 반복 작업들을 Spring Data JPA 구현체인 Hibernate가 애플리케이션 실행 시점에 동적으로 자주 사용되는 쿼리 집합을 만든다.
그리고 JpaRepository안에 <>는 제네릭이라고 하는데 순서는 다음과 같다.
1. Entity
2. Enttiy에서 사용할 PK 데이터 타입이다.
JpaRpository를 상속하면 구현체 class를 안만들어도 알아서 만든다.
따라서 전에 JPA에서는
인터페이스를 실제 구현했어야 하지만 JPA Repository를 사용하게 되면 springDataJpaMemberRepository에 상속받은 MemberRepository의 메소드를 상속받고 JPARepository로 인해서 실제 save, findById, findAll은 구현된다. 하지만 JPARepository에는 findByName은 없다. JPARepository는 통상적으로 사용된 것만 모아놓은 거기 때문에 없는 것들은 실제로
구현해야 한다. 이로서 인터페이스 선언만으로 4가지 메소드를 실제 구현없이 사용할 수 있다.