Основы JPA

Базовый Java
≈ 2 мин чтения

JPA задаёт правила, provider выполняет работу

JPA описывает общий API для работы с persistent-объектами: как объявить Entity, как найти или сохранить объект, как описать связи и как выполнять запросы. Конкретную реализацию этих правил предоставляет persistence provider, например Hibernate.

Поэтому код приложения в основном работает с типами jakarta.persistence, а provider уже преобразует операции над объектами в SQL и взаимодействует с базой данных.

Центральный объект — EntityManager

User user = entityManager.find(User.class, 42L);

if (user != null) {
    System.out.println(user.getName());
}

Метод find() ищет Entity по её типу и первичному ключу. Вместо ручного чтения столбцов из ResultSet приложение получает объект User. Это не отменяет SQL и реляционную модель — JPA просто берёт значительную часть преобразования между ними и объектами на себя.

JPA работает вокруг persistence context

Полученные и сохранённые Entity обычно существуют внутри специального контекста, который знает, какими объектами сейчас управляет. Благодаря этому JPA может отслеживать изменения и синхронизировать состояние объектов с базой данных в подходящий момент. Подробно этот механизм разберём на отдельной странице.

JPA не означает «SQL больше не нужен». Хороший JPA-код всё равно требует понимания таблиц, связей, запросов и стоимости обращений к базе.