JPA는 인터페이스로서 자바 표준명세서이다.
인터페이스인 JPA를 사용하기 위해서는 구현체가 필요하고, 대표적으로 Hibernate, Eclipse Link 등이 있다.
하지만 Spring에서 JPA를 사용할 때는 이 구현체들을 직접 다르지 않고 구현체들을 좀 더 쉽게 사용하고자 추상화시킨 Spring Data JPA라는 모듈을 이용하여 JPA 기술을 쓴다. 이들의 관계는 다음과 같다.
JPA ← Hibernate ← Spring Data JPA
실질적으로 Hibernate를 쓰는 것과 Spring Data JPA를 쓰는 것 사이에 큰 차이는 없다.
이렇게 한 단계 더 감싸놓은 Spring Data JPA가 등장한 이유는 두가지가 있다.
구현체 교체의 용이성
저장소 교체의 용이성