Ответ
JPA (Java Persistence API) — это стандартная спецификация ORM для Java, определяющая набор интерфейсов и аннотаций для работы с реляционными базами данных. Hibernate — одна из самых популярных реализаций этой спецификации.
Ключевые отношения:
- JPA — это стандарт, Hibernate — его реализация. Аналогично связи между JDBC (API) и конкретным драйвером базы данных (реализация).
- Hibernate реализует все аннотации и интерфейсы, описанные в JPA (например,
@Entity,@Id,EntityManager). - Hibernate также предоставляет собственные расширенные возможности (например, HQL, критерии, кэширование второго уровня), которые выходят за рамки стандарта JPA.
Пример кода с аннотациями JPA:
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Геттеры и сеттеры
}
Этот код использует только JPA-аннотации, но для его работы в приложении требуется реализация JPA, например, Hibernate.
Практический вывод: Вы пишете код, используя стандартный API JPA (что обеспечивает переносимость), а Hibernate выполняет всю "тяжелую" работу по преобразованию объектов в SQL-запросы и обратно.