Ответ
JPA (Java Persistence API) — это стандартная спецификация ORM для Java, описывающая API для управления реляционными данными в приложениях. Hibernate — самая популярная реализация этой спецификации, которая расширяет её возможности.
Ключевые отличия:
- JPA определяет интерфейсы и аннотации (например,
@Entity,@Id). - Hibernate предоставляет их реализацию, а также дополнительные, не входящие в стандарт, функции.
Пример использования JPA (стандартный код):
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Геттеры и сеттеры
}
Пример использования нативного API Hibernate:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setName("John");
// Метод save() — это специфичный для Hibernate API
session.save(user);
tx.commit();
session.close();
Практика: Для переносимости кода лучше использовать стандартный JPA. К нативным возможностям Hibernate (критерии, кэширование второго уровня, специальные типы данных) прибегают, когда нужна оптимизация или функционал за пределами спецификации.