К каким стандартам (JSR) относится JPA?

«К каким стандартам (JSR) относится JPA?» — вопрос из категории Hibernate, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 позволяет писать переносимый код, не зависящий от конкретного провайдера.