JPA
- Java Persistence API
- 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 (=구현체가 아님)
- javax.persistence 패키지의 대부분은 interface, enum, Exception, Annotation으로 이루어져 있다.
Hibernate
- JPA의 구현체 (Hibernate만 있는 것은 아님)
- javax.persistence.EntityManager와 같은 JPA의 인터페이스를 직접 구현한 라이브러리
Spring Data JPA
- JPA를 한 단계 더 추상화시킨 모듈. (Spring Data JPA의 Repository의 구현에서 JPA를 사용하고 있다는 뜻)
- Repository라는 인터페이스를 제공한다. Repository가 Spring Data JPA의 핵심!
- Repository: 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면 Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해준다.