Что такое JPA (Java Persistence API) и для чего он используется?

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

Ответ

JPA (Java Persistence API) — это стандартная спецификация Java EE (и Jakarta EE) для ORM (Object-Relational Mapping). Она описывает, как управлять реляционными данными в Java-приложениях, используя объектную модель.

Основная цель: Преобразовывать данные между объектами Java и таблицами базы данных, минимизируя ручное написание SQL-кода.

Ключевые компоненты и аннотации:

  • @Entity: Помечает класс как сущность, отображаемую на таблицу БД.
  • @Id и @GeneratedValue: Определяют первичный ключ и стратегию его генерации (например, автоинкремент).
  • EntityManager: Центральный интерфейс для операций с жизненным циклом сущностей (persist, find, merge, remove).
  • JPQL (Java Persistence Query Language): Объектно-ориентированный язык запросов, похожий на SQL, но работающий с сущностями, а не таблицами.

Пример сущности:

import javax.persistence.*;

@Entity
@Table(name = "employees") // Соответствует таблице 'employees'
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "full_name", nullable = false)
    private String name;

    private BigDecimal salary;

    // Обязательный конструктор без аргументов
    public Employee() {}

    // Геттеры и сеттеры
    // ...
}

Популярные реализации: Hibernate, EclipseLink, Apache OpenJPA. Использование JPA повышает переносимость кода между разными провайдерами ORM.