| JPA | Hibernate | Spring Data JPA | |
|---|---|---|---|
| Là gì | Specification (JSR-338) | Implementation của JPA | Abstraction trên JPA |
| Ai định nghĩa | Jakarta EE | Red Hat | Spring |
JPA = chuẩn (interface, annotation, JPQL). Nhiều impl: Hibernate, EclipseLink.
Hibernate = JPA provider phổ biến nhất. Thêm HQL, caching L2, batch processing.
Spring Data JPA = abstraction trên JPA provider — sinh repository implementation tự động:
interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
List<User> findByActiveTrue();
}
// Spring tự sinh: new SimpleJpaRepository<>(User.class, em)Dependency chain:
app code → Spring Data JPA → JPA API → Hibernate → JDBC → DBSpring Boot auto-config: spring-boot-starter-data-jpa kéo Spring Data JPA + Hibernate + HikariCP.
| JPA | Hibernate | Spring Data JPA | |
|---|---|---|---|
| What it is | Specification (JSR-338) | Implementation of JPA | Abstraction on top of JPA |
| Defined by | Jakarta EE | Red Hat | Spring |
JPA = the standard (interfaces, annotations, JPQL). Multiple implementations: Hibernate, EclipseLink.
Hibernate = the most popular JPA provider. Adds HQL, L2 caching, batch processing.
Spring Data JPA = abstraction on top of the JPA provider — generates repository implementations automatically:
interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
List<User> findByActiveTrue();
}
// Spring generates: new SimpleJpaRepository<>(User.class, em)Dependency chain:
app code → Spring Data JPA → JPA API → Hibernate → JDBC → DBSpring Boot auto-config: spring-boot-starter-data-jpa pulls in Spring Data JPA + Hibernate + HikariCP.