Ответ
JPA — это спецификация, а ее реализации — это ORM-фреймворки, которые предоставляют функциональность для работы с БД.
Основные реализации:
- Hibernate — самая популярная и функционально богатая реализация. Имеет большое сообщество, расширенные возможности (например, дополнительные аннотации, типы данных) и часто используется по умолчанию в Spring Boot.
- EclipseLink — эталонная реализация (Reference Implementation) JPA. Разрабатывается фондом Eclipse. Часто используется в серверах приложений, таких как GlassFish.
- Apache OpenJPA — реализация от Apache Software Foundation. Менее распространена, чем Hibernate.
- DataNucleus — уникальная реализация, поддерживающая не только JPA, но и стандарт JDO (Java Data Objects). Может работать с различными хранилищами: реляционными БД, NoSQL (MongoDB, Neo4j), облачными хранилищами.
Пример сущности JPA (одинаков для всех реализаций):
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String username;
// Геттеры и сеттеры
}
Ключевой выбор: Hibernate — для большинства проектов из-за зрелости и интеграции; EclipseLink — если требуется строгое соответствие спецификации или используется GlassFish; DataNucleus — для мультидатасторных приложений.