Ответ
JPA (Java Persistence API) — это стандарт спецификации ORM для платформы Java. Его развитие описывается в документах JSR (Java Specification Request). Основные версии:
| Версия JPA | JSR Номер | Часть Спецификации | Год | Ключевые Нововведения |
|---|---|---|---|---|
| JPA 1.0 | JSR 220 | Java EE 5 | 2006 | Базовая модель, аннотации @Entity, @Id, EntityManager. |
| JPA 2.0 | JSR 317 | Java EE 6 | 2009 | Criteria API, улучшенная поддержка коллекций, валидация (Bean Validation). |
| JPA 2.1 | JSR 338 | Java EE 7 | 2013 | Конвертеры атрибутов, хранимые процедуры, генераторы схемы. |
| JPA 2.2 | Поддержка JSR 338 | Jakarta EE 8 | 2017 | Поддержка Java 8 Date/Time API, аннотации @Repeatable, потоковая обработка результатов. |
| JPA 3.0 | Переименование | Jakarta EE 9 | 2020 | Переход с пакетов javax.persistence на jakarta.persistence. |
Пример кода (JPA 2.2+):
import jakarta.persistence.*; // или javax.persistence для версий до Jakarta EE 9
@Entity
@Table(name = "employees")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String name;
// Конвертер атрибута (появился в JPA 2.1)
@Convert(converter = BooleanToYNConverter.class)
private boolean active;
}
Реализации (провайдеры): Hibernate, EclipseLink, Apache OpenJPA. Спецификация JPA позволяет писать переносимый код, не зависящий от конкретного провайдера.